你好
我是一个尝试熟悉Smartsnippets开发环境的新用户。我正在使用:
开发工具包: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构建配置构建二进制文件
step2:我使用运行 - >外部工具 - > program_qspi_jtag并获得以下输出
.................................................................................................................... ..程序qspi .. .......................................................................................................................................................................................................................................... .. ..编程图像.. ...................................................................................................................... cli_programmer 1.26.版权所有(c)2015-2019对话框半导体Boyabo国际娱乐otloader文件未指定,使用Internal UartBoot.bin
然后它永远挂着
方法2:
然后,我尝试直接使用以下命令行工具:SDK_10.0.4.66.2/doc/html/cli_programmer.html
我找不到关于GDB-服务器参数的任何文件(在那里,我没有发现任何这样的文档?),但我把参数从SmartSnippets调用,并开始gdbserver的,如下:
GDB-Server输出:
JLink_Linux_V644i_x86_64 // JLinkGDBServer - 如果SWD -device的Cortex-M33 -endian小-SPEED 8000 -port 2331 -swoport 2332 -telnetport 2333 -vd -ir -localhostonly 1 -log jlink.log -singlerun -strict -timeout 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连接到目标。..连接到目标等待GDB连接...连接到127.0.0.1收到的Monitor命令:CLRBP收到的Monitor命令:重置0通过SysresetReq&VectreSet位重置核心和外围设备。收到的Monitor命令:睡眠10睡眠10ms收到的监视器命令:Halt Halting目标CPU ... ...目标停止(PC = 0x0000076C)收到的Monitor命令:Memu32 0x20010000 = 0xdeadbeef写入0xdeadbeef @地址0x20010000接收到显示器命令:memu32 0x20010004 = 0xdeadbeef写作0xdeadbeef @地址0x20010004收到的monitor命令:memu32 0x20010008 = 0xdeadbeef写入0xdeadbeef @地址0x20010008收到的monitor命令:memu32 0x2001000c = 0xdead10cc写入0xdead10cc @地址0x2001000c下载4 bytes @地址0x100c0050 - 验证失败收到的monitor命令:睡眠100睡眠100ms接收显示器 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/binaries$。/cli_程序员gdbserver 0x0../projects/dk_应用程序/演示程序/pxp_报告程序/DA1469x-00-Debug_QSPI/pxp_报告程序.bin cli_程序员1.26版权所有(c)2015-2019对话框半导体引导加载程序文件未指定,使用内部uartboot.bin上载yabo国际娱乐引导加载程序/应用程序可执行文件。。。可执行文件已上载。
然后它永远挂着
设备:
rubicoaxel,
你能按照下面的程序,然后让我知道你是否能够下载固件到QSPI闪存吗?
谢谢,下午好
非常感谢您的快速回复!
我已经使用参数执行了第1步:
-产品编号:DA1469x-00
-闪存配置:MX25U3235F
- active_fw_image_addr:0x2000
- update_fw_image_address:0x2000
当运行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,
你能检查一下跳线的配置吗?我想这张照片会很有帮助的。bin是用于加载应用程序二进制映像的辅助引导加载程序。当设备引导时,BootROM代码将检查OTP,如果它没有与辅助引导加载程序绑定,将加载uartboot.bin,这是默认配置。我看不出你收到的信息有任何错误。你把电路板复位了吗?另外,您可以尝试通过UART擦除/编程QSPI闪存吗?
谢谢,下午好
你好
这是我的dev-kit的照片:https://drive.google.com/file/d/1NVgKlmbTPuT9DU0yS34o1FosYikG_K5y/view
UART擦除/程序:
我无法弄清楚如何删除和/或节目uart(如您要求我尝试)。
我能找到的所有信息都是://www.xmece.com/sites/default/files/an-b-069-da1469...
但这只解释了该协议。
我假设在SDK之后有SW-工具(希望有些人入门指南?)?
你能给我指一些相关的文件吗?
JTAG删除/程序:
你能帮我弄清楚这个过程(或指向相关文档),什么部分应该做什么?
到目前为止,这是我对过程的零散猜测:
0. Python脚本启动GDB-Server并使用CLI_Programmer工具执行下面的操作 /二进制/ cli_programmer”给出的命令,例如
1.通过直接编写到RAM(类似于RAM-Debug-Session),JTAG附加并上传UartBoot.bin
2.JTAG执行软件重置(同样,正如我认为RAM调试所做的那样)
3.uartboot.bin从RAM执行,做什么?
4. uartboot以某种方式(?)执行“
- “chip_erase_all”或
- “program_flash”(在这种情况下,实际图像如何传输?横槽虚拟串口(/ dev / ttyacm0)或其他一些手段?
或者是uartboot.bin由bootrom读取和执行(而不是上面的步骤1-3)?如果是这样,是UARTBOOT.BIN传送的槽/ dev / ttyacm0 - >调试器USB到UART转换器 - > DA1469X BOOT UART?PC侧的工具是负责该沟通的责任吗?
问题4仍然存在,一旦uartboot.bin启动,如何将擦除/闪存命令传输到目标运行的uartboot.bin程序?
非常感谢任何帮助
此致
轴
rubicoaxel,
让我检查你的问题,我会尽快回复你。
谢谢,下午好
非常感谢坦克你!
好了,我已经解决了!
我发现关于CLI-Programmer的文档(SDK_10.0.4.66.2 / doc / html / cli_programmer.html)能够从那里省略。
精简版:看来flash中的当前程序导致了gdb崩溃。有一次我弄明白了cli_程序员和串行工作者是怎么做的
然后,我能够让JTAG闪存Python脚本工作成功编程图像。
如果其他人遇到这种情况,那么串行芯片擦除就是你的朋友:)
细节(如果有人奇迹):
使用cli_程序员上的strace,我检查了与gdb的通信,在发出最后一个“continue”命令后,gdbserver简单地停止响应我的命令
GDBSERVER的输出(仅限最后两个命令)
strace cli_programmer的输出(#后的评论)
在jlink.log中,我们看到了无尽的
我猜:
是,GDBSERVER与从Flash运行的程序之间存在一些时序竞争条件,导致调试器崩溃并挂起该过程。具有擦除的FlashMemory消除了比赛(在Flash和GDB中的RUEGE程序之间)。
解决了我的一些问题uartboot.bin
一旦我进入一些CLI_Programmer示例,我也会管理我自己的问题。
UARBOOT.BIN由BOOT-ROM TROUGH启动串口(未在我第一次想到的情况下使用GDB上传)。
1.在第一次执行cli_编程器时,它打开并准备seralport进行引导,然后要求用户按reset启动uartboot.bin的过程。
2.启动后,UARTBOOT.BIN留存(在调用和用于CLI_Programmer给出的命令的终端服务器之间)。
3.在CLI程序员的后续调用上,不需要启动/重置UartBoot.bin已在运行。
最终问题:
只是我不明白的最后一件事。
就我所见,serialport根本不在jtag模式下使用,那么为什么jtag版本的cli_程序员需要上传uartboot.bin(据我所知,它作为串行终端服务器工作)?
此致
轴
rubicoaxel,
很高兴你认为你发出了发出并感谢您的详细迹象。
你能澄清你最后一个问题吗?正如我在我之前的注释中提到的那样,UartBoot.bin是一个辅助引导程序,以便加载应用程序二进制图像。
谢谢,下午好
你好!
是的,在加载应用程序 - 图像槽UART(CLI_Programmer / dev / ttyacm0 ...)的情况下,Uartboot会通过UART接收应用程序并将其编程到QSPI-Flash。到目前为止我和你在一起。
但在其他情况下,在JTAG(CLI_Programmer Gdbserver ......)上加载应用程序,那么uartboot.bin的目的是什么?
它可能还负责闪烁吗?比如:
1.JTAG将应用程序映像上载到ram
2.uartboot.bin(以某种方式由JTAG触发)从RAM复制到闪存?
这些是低级细节,我认为不是很重要,如果你碰巧从头顶知道的话,我只是好奇:)
此致
轴
rubicoaxel,
因为uartboot.bin是cli_程序员用于与目标通信的中间引导加载程序。uartboot固件将自动检测设备变量。uartboot一直用作辅助引导加载程序,以便将二进制映像加载到设备。
谢谢,下午好