你好!
我是一个尝试熟悉Smartsnippets开发环境的新用户。我正在使用:
DEV-套件:da14695-00hqdevkt-u.
SDK:SDK_10.0.4.66.2
JLink:jlink_linux__v644i._x86_64.
SmartSnippet:smartsnippetsstudio2.0.8
我已成功编译了测试程序“PXP-Reporter”,可以将其加载到SmartSnippet中的RAM和调试。我可以从手机扫描BLE设备,所以到目前为止一切都很顺利。
现在我想尝试将“PXP-Reporter”闪现给Dev-kit,但我无法达到工作。
我尝试了两种方法(见下文),没有结果。
一般的问题:
- 我不明白闪存本身(例如,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-Server参数的任何文档(有没有此类Doc我无法找到的文件?)但是我从SmartSnippet调用中获取了参数,并启动GDBServer如下所示:
GDB-Server输出:
jlink_linux_v644i_x86_64 // jlinkgdbserver -if swd -device cortex-m33-endian little -speed 8000-port 2331 -swoport 2332 -telnetport 2333-vd -loc -logly 1 -log jlink.log -singlerun -strict -dimeout 0 -nogui -rtosgdbserver / rtosplugin_freertos segger j-link gdb server v6.44i命令行版本jlinkarm.dll v6.44i(Dll编译5月17日2019年5月17日17:37:26)命令行:-if swd -device cortex-m33-endian小 - 速度8000-port 2331 -swoport 2332 -telnetport 2333 -vd -ir -localhostonly 1 -log jlink.log -singlerun -strict -timeout 0 -nogui -rtos gdbserver / rttoSplugin_freertos ----- gdb服务器启动设置----- gdbinit文件:无GDB服务器侦听端口:2331 SWO原始输出侦听端口:2332终端I / O端口:2333接受远程连接:localhost仅生成日志文件:验证下载:在init regs上开始:在静音模式下:关闭单个运行模式:目标连接超时:0 ms ------ J-Link相关设置------ J-Link主机界面:USB J-Link脚本:无J-Link设置s文件:无------目标相关设置------目标设备:Cortex-M33目标接口:SWD目标接口速度:8000khz目标endian:与J-Link的一点连接... J-Link是连接的。固件:J-Link OB-SAM3U128 V3编译1月7日2019年1月7日14:06:26硬件:V3.00 S / N:483051972检查目标电压...目标电压:3.30 v聆听TCP / IP端口2331连接到目标。。。Connected to target Waiting for GDB connection...Connected to 127.0.0.1 Received monitor command: clrbp Received monitor command: reset 0 Resets core & peripherals via SYSRESETREQ & VECTRESET bit. Received monitor command: sleep 10 Sleep 10ms Received monitor command: halt Halting target CPU... ...Target halted (PC = 0x0000076C) Received monitor command: memU32 0x20010000 = 0xdeadbeef Writing 0xDEADBEEF @ address 0x20010000 Received monitor command: memU32 0x20010004 = 0xdeadbeef Writing 0xDEADBEEF @ address 0x20010004 Received monitor command: memU32 0x20010008 = 0xdeadbeef Writing 0xDEADBEEF @ address 0x20010008 Received monitor command: memU32 0x2001000c = 0xdead10cc Writing 0xDEAD10CC @ address 0x2001000C Downloading 4 bytes @ address 0x100C0050 - Verify failed Received monitor command: sleep 100 Sleep 100ms Received monitor command: reset 0 Resets core & peripherals via SYSRESETREQ & VECTRESET bit. Received monitor command: sleep 1 Sleep 1ms Received monitor command: halt Halting target CPU... ...Target halted (PC = 0x200010CA) Downloading 2 bytes @ address 0x50000024 - Verified OK Received monitor command: loadbin /tmp/cli_programmer_IDqXYy, 0x00000000 Loading binary file [/tmp/cli_programmer_IDqXYy] ... Downloading 30484 bytes @ address 0x00000000 - Verified OK Binary file loaded successfully (30484 bytes downloaded) Received monitor command: reset 0 Resets core & peripherals via SYSRESETREQ & VECTRESET bit. Received monitor command: go Starting target CPU... Received monitor command: reset 0 Resets core & peripherals via SYSRESETREQ & VECTRESET bit. Received monitor command: halt Halting target CPU... ...Target halted (PC = 0x0000076C) Downloading 1 bytes @ address 0x00000218 - Verified OK Performing single step... ...Target halted (Vector catch, PC = 0x0000076E) Starting target 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至2019年Dialog半导体yabo国际娱乐的bootloader文件没有指定,使用内部uartboot.bin上传引导装载程序/应用程序可执行文件...可执行上传。
然后,它永远挂
设备:
rubicoaxel,
能否请您按照下面的步骤,然后让我知道,如果你能固件下载到闪存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”。那是正常的吗?
rubicoaxel,
你可以请检查跳线的配置?我的照片会非常有帮助。该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程序在目标上运行?
非常感谢任何帮助
此致
轴
rubicoaxel,
让我检查你的问题,我会尽快回复你。
谢谢,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运行的程序之间存在一些时序竞争条件,导致调试器崩溃并挂起该过程。具有擦除的FlashMemory消除了比赛(在Flash和GDB中的RUEGE程序之间)。
我的问题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(我理解作品串行终端服务器)?
此致
轴
rubicoaxel,
很高兴你认为你发出了发出并感谢您的详细迹象。
你能澄清你最后一个问题吗?正如我在我之前的注释中提到的那样,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某种程度上触发)?
这些是低级细节,我认为不是很重要,如果你碰巧从头顶知道的话,我只是好奇:)
此致
轴
rubicoaxel,
由于uartboot.bin是他中间的引导加载器与目标通信cli_programmer用途。该uartboot固件将自动检测设备的变体。该uartboot被一直使用作为二次引导程序,以便将二进制的图像加载到该设备。
谢谢,PM_DIALOG.