你好,
我正在运行“DA1458x\u DSPS\v\u 5.150.2\projects\target\u apps\DSPS\sps\u device\Keil\u 5\sps”_device.uvprojx“在DA14580DEVKIT-PRO的RAM中。
我无法使用DSPS应用程序3.210.4(2017年7月25日)在我的Android设备(HuaWey P9 Lite)上运行)来检测设备。
使用此演示的正确步骤是什么?
非常感谢你提前,
毛里齐奥
Keywords:
设备:
你好Maurizio Malaspina,
默认的dpsp\u设备应用程序代码使用硬件流控制。请检查user\u periph\u setup.h头文件中的CFG\u UART\u HW\u FLOW\u CTRL。所以,如果你有专业DK你应该正确配置跳线。我建议看一下UM-B-088用户手册的图19。你们有相同的跳线配置吗?
https://support.dialog-semiconductor.com/system/files/resources/UM-B-088%20DA14585%20Serial%20Port%20Service%20Reference%20Application_v1.0.pdf
谢谢,PM_DIALOG.
Thank you for the reply.
跳线配置正确,用于带硬件流量控制通信的UART。
我已经重建了目标,现在我可以看到我的Android智能手机的蓝牙检测到的“DIALOG-SPS”设备。
现在的问题是调试停止了。
我可以在Keil IDE的“Command”窗口中看到:
使用代码大小限制:32K
将JLink项目文件设置为“C:\用户\ utente \ desktop \ da1458x_dsps \ v_5.150.2 \ projects \ target_apps \ dsps \ sps_device \ keil_5 \ jlinksettings.ini”* jlink info:设备“cortex-m0”选择。
jlink信息:
-------------
DLL:V6.32i,编译时间:2018年7月24日15:19:55
固件:j-link ob-sam3u128 v1编译7月12日2018年12:17:48
硬件:V1.00
序列号:480068119
* JLINK信息:找到带ID 0x0BB11477的SW-DP
* JLINK信息:扫描AP地图查找所有可用的AP
* JLINK信息:AP [1]:已停止AP扫描作为AP地图的结尾已达到
* JLINK INFO:AP [0]:AHB-AP(IDR:0x04770021)
*JLink信息:遍历AP映射以找到要使用的AHB-AP
* jlink信息:AP [0]:找到核心
*JLink信息:AP[0]:AHB-AP ROM基:0xE00FF000
* JLINK信息:CPUID寄存器:0x410cc200。实施者代码:0x41(手臂)
*JLink信息:找到Cortex-M0 r0p0,Little endian。
*JLink Info:FPUnit:4个代码(BP)槽和0个文本槽
* jlink信息:coresight组件:
*链接信息:ROMTbl[0]@E00FF000
* jlink信息:romtbl [0] [0]:e000000,cid:b105e00d,pid:000bb008 scs
*链接信息:ROMTbl[0][1]:E0001000,CID:B105E00D,PID:000BB00A DWT
*JLink Info: ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB
romtableddr = 0xe00ff000
*JLink信息:复位:复位后停止核心通过DEMCR.VC_CORERESET.
*JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
Target info:
-------------
设备:ARMCM0
VTarget = 3.300V
PIN状态:TCK:0,TDI:1,TDO:1,TMS:1,TRES:1,TRST:1
硬件断点:4
软件断点:8192
观察点:2
JTAG speed: 1000 kHz
包括“c:\\ users \\ utente \\ desktop \\ da1458x_dsps \\ v_5.150.2 \\ projects \\ target_apps \\ dsps \\ sps_device \\ keil_5 \\ .. \\ .. \\ .. \\.. \\ .. \\ sdk_580 \\ sdk \\ common_project_files \\ misc \\ sysram_case23.ini“
/ *杀死按钮* * /
/ *定义按钮“重置dk580”,“包含../../misc/sysram_case23.ini”* /
RESET
*JLink信息:复位:复位后停止核心通过DEMCR.VC_CORERESET.
*JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
E long 0x50000012 = 0xa4
e long 0x50003308 = 0x2e
加载%L.
*JLink信息:复位:复位后停止核心通过DEMCR.VC_CORERESET.
*JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
SP=\r单词(0x20000000)
$ = _RDWORD (0x20000004)
func void disp_memlog(void)
{
int idx;
unsigned int min_delta;
exec(“日志>Memlog.log");
printf(“\n\n***内存记录结果***\n\n”);
printf(">>> ENV HEAP <<<\n");
printf("Used size in this HEAP : %4d (current) - %4d (maximum)\n", mem_log[0].used_sz, mem_log[0].max_used_sz);
printf(“其他堆的使用大小:%4d(当前) - %4d(最大)\ n \ n”,mem_log [0] .used_other_sz,mem_log [0] .max_used_other_sz);
printf(">>> DB HEAP <<<\n");
printf(“此堆中使用的大小:%4d(当前)-%4d(最大)\n”,mem\u log[1]。Used\u sz,mem\u log[1]。max\u Used\u sz);
printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n", mem_log[1].used_other_sz, mem_log[1].max_used_other_sz);
printf(“>>> msg heap <<< \ n”);
printf("Used size in this HEAP : %4d (current) - %4d (maximum)\n", mem_log[2].used_sz, mem_log[2].max_used_sz);
printf(“在其他堆中使用的大小:%4d(当前)-%4d(最大)\n\n”,mem\u log[2]。Used\u other\u sz,mem\u log[2]。max\u Used\u other\u sz);
printf(“>>>非Ret堆<<\n”);
printf(“此堆中的使用大小:%4d(当前) - %4d(最大)\ n”,mem_log [3] .use_sz,mem_log [3] .max_used_sz);
printf(“在其他堆中使用的大小:%4d(当前)-%4d(最大)\n\n”,mem\u log[3]。Used\u other\u sz,mem\u log[3]。max\u Used\u other\u sz);
exec(“注销”);
} // disp_memlog()结束
** jlink警告:CPU无法停止
*** JLINK错误:CPU运行时无法读取寄存器15(R15)
*** jlink错误:CPU正在运行时无法读取寄存器16(XPSR)
***JLink错误:CPU运行时无法读取寄存器0(R0)
***JLink错误:CPU运行时无法读取寄存器1(R1)
***JLink Error: Can not read register 2 (R2) while CPU is running
*** jlink错误:CPU运行时无法读取寄存器3(R3)
***JLink错误:CPU运行时无法读取寄存器4(R4)
* * * JLink错误:无法读取寄存器5 (R5)CPU is running
***JLink Error: Can not read register 6 (R6) while CPU is running
*** jlink错误:CPU运行时无法读取寄存器7(R7)
***JLink错误:CPU运行时无法读取寄存器8(R8)
***JLink错误:CPU运行时无法读取寄存器9(R9)
***JLink错误:CPU运行时无法读取寄存器10(R10)
*** jlink错误:CPU运行时无法读取寄存器11(R11)
***JLink Error: Can not read register 12 (R12) while CPU is running
***JLink错误:CPU运行时无法读取寄存器13(R13)
***JLink错误:CPU运行时无法读取寄存器14(R14)
*** JLINK错误:CPU运行时无法读取寄存器15(R15)
*** jlink错误:CPU正在运行时无法读取寄存器16(XPSR)
***JLink错误:CPU运行时无法读取寄存器17(MSP)
*** jlink错误:CPU运行时无法读取寄存器18(PSP)
***JLink Error: Can not read register 20 (CFBP) while CPU is running
可能是什么问题?
先谢谢你,
毛里齐奥
你好Maurizio Malaspina,
你能用热门安装调试器可以运行它吗?为了找到固件崩溃的位置?代码崩溃时?当你试图从你手机连接?由于您将固件下载到System-RAM,因此DA14580开始广告?请您查看它的SmartSnipptes Toolbox的电源分布程序吗?
谢谢,PM_DIALOG.
Thank you for the reply.
我已经正确地指出了“…..\DA1458x\u DSPS\v\u 5.150.2\projects\target\u apps\DSPS\sps\u device\Keil\u 5”\JLinkSettings.iniKEIL-uVision IDE中“option for target'spds\u device\u 580'”调试选项卡中的初始化文件。
In this way no crash happens during debugging in RAM and launching the "DIALOG-SPS" App on my Android smartphone my "DIALOG-SPS" device is found.
尽管如此,在调试期间无法建立连接。
如果我使用“smartsnippettoolboxv.5.0.6.2196”提供的“booter”工具在RAM中上传应用程序,那么应用程序运行和连接就可以建立!
为什么应用程序在调试期间不能正常运行?
你好Maurizio Malaspina,
>> Despite of this the connection cannot be established during debugging.
您的意思是调试器已热连接,无法连接吗?
>>如果我使用“SmartSnippet Toolbox V.5.0.6.2196”提供的“Booter”工具在RAM中上传应用程序运行和连接可以建立连接!
你能澄清一下吗?你的意思是把固件下载到SPI闪存中?
谢谢,PM_DIALOG.
感谢您的回复,请原谅我延迟。
>>Do you mean that you have the debugger hot attached and you are not able to connect?
准确(见附件“Picture_1.png”)
I note a "*** error 10: Syntax error" in the command prompt, when I launch the debugging session.
>>你能澄清一下吗?你的意思是把固件下载到SPI闪存中?
I'm loading the hex file into the main SysRAM of the chip (see "Picture_2.png" and "Picture_3.png" attached) and the DIALOG_SPD device is detected (see "Screenshot_Android.png").
这是完整的命令提示符输出:
使用代码大小限制:32K
将JLink项目文件设置为“C:\用户\ utente \ desktop \ da1458x_dsps \ v_5.150.2 \ projects \ target_apps \ dsps \ sps_device \ keil_5 \ jlinksettings.ini”* jlink info:设备“cortex-m0”选择。
jlink信息:
-------------
DLL:V6.32i,编译时间:2018年7月24日15:19:55
固件:j-link ob-sam3u128 v1编译7月12日2018年12:17:48
硬件:V1.00
序列号:480068119
* JLINK信息:找到带ID 0x0BB11477的SW-DP
* JLINK信息:扫描AP地图查找所有可用的AP
* JLINK信息:AP [1]:已停止AP扫描作为AP地图的结尾已达到
* JLINK INFO:AP [0]:AHB-AP(IDR:0x04770021)
*JLink信息:遍历AP映射以找到要使用的AHB-AP
* jlink信息:AP [0]:找到核心
*JLink信息:AP[0]:AHB-AP ROM基:0xE00FF000
* JLINK信息:CPUID寄存器:0x410cc200。实施者代码:0x41(手臂)
*JLink信息:找到Cortex-M0 r0p0,Little endian。
*JLink Info:FPUnit:4个代码(BP)槽和0个文本槽
* jlink信息:coresight组件:
*链接信息:ROMTbl[0]@E00FF000
* jlink信息:romtbl [0] [0]:e000000,cid:b105e00d,pid:000bb008 scs
*链接信息:ROMTbl[0][1]:E0001000,CID:B105E00D,PID:000BB00A DWT
*JLink Info: ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB
romtableddr = 0xe00ff000
*JLink信息:复位:复位后停止核心通过DEMCR.VC_CORERESET.
*JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
Target info:
-------------
设备:ARMCM0
VTarget = 3.300V
PIN状态:TCK:0,TDI:1,TDO:1,TMS:1,TRES:1,TRST:1
硬件断点:4
软件断点:8192
观察点:2
JTAG speed: 1000 kHz
load“c:\\ users \\ utente \\桌面\\ da1458x_dsps \\ v_5.150.2 \\ projects \\ target_apps \\ dsps \\ sps_device \\ keil_5 \\ out_580 \\ sps_device_580.axf”
*JLink信息:复位:复位后停止核心通过DEMCR.VC_CORERESET.
*JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
Include "C:\\Users\\Utente\\Desktop\\DA1458x_DSPS\\v_5.150.2\\projects\\target_apps\\dsps\\sps_device\\Keil_5\\JLinkSettings.ini"
[断点]
^
***错误10:语法错误
What do you think is wrong?
先谢谢你,
毛里齐奥
Hi Maurizio Malaspina
你能读读这本书吗Tutorial 8: Debugging methods从我们的支持网站教程,以了解如何在调试模式下运行代码?
谢谢,PM_DIALOG.
Dear PM_Dialog,
谢谢你的支持。
I've successfully read and putted into practice the first part of tutorial 8.
随后,我尝试在sps\u设备项目中执行相同的步骤。
第一次尝试失败。我发现,“目标”SPS_DEVICE_580' - > debug选项选项中的jlink的默认初始化文件指向的jlink指向“选项”选项卡错误。
正确的一个到点是“.. \ .. \ .. \ .. \。\ sdk_580 \ sdk \ common_project_files \ misc \ sysram_case23.ini”。
通过这种方式,在命令提示符输出窗口中没有更多“***错误10:语法错误”。
不幸的是,在这个项目中,UART2端口被用作UARToverBLE的I/O终端,所以我不能像教程8中描述的那样激活“CFG\u PRINTF”,但是调试是在KeilIDE中启动的。
通过这种配置,DIALOG-SPS应用程序能够检测设备,并且所有设备都正常工作,但是JLINK失去了连接,无法从IDE执行实时调试。
当与uC的连接断开时,命令提示符输出窗口显示:
使用代码大小限制:32K
将JLink项目文件设置为“C:\用户\ utente \ desktop \ da1458x_dsps \ v_5.150.2 \ projects \ target_apps \ dsps \ sps_device \ keil_5 \ jlinksettings.ini”* jlink info:设备“cortex-m0”选择。
jlink信息:
-------------
DLL:V6.32i,编译时间:2018年7月24日15:19:55
固件:j-link ob-sam3u128 v1编译7月12日2018年12:17:48
硬件:V1.00
序列号:480068119
* JLINK信息:找到带ID 0x0BB11477的SW-DP
* JLINK信息:扫描AP地图查找所有可用的AP
* JLINK信息:AP [1]:已停止AP扫描作为AP地图的结尾已达到
* JLINK INFO:AP [0]:AHB-AP(IDR:0x04770021)
*JLink信息:遍历AP映射以找到要使用的AHB-AP
* jlink信息:AP [0]:找到核心
*JLink信息:AP[0]:AHB-AP ROM基:0xE00FF000
* JLINK信息:CPUID寄存器:0x410cc200。实施者代码:0x41(手臂)
*JLink信息:找到Cortex-M0 r0p0,Little endian。
*JLink Info:FPUnit:4个代码(BP)槽和0个文本槽
* jlink信息:coresight组件:
*链接信息:ROMTbl[0]@E00FF000
* jlink信息:romtbl [0] [0]:e000000,cid:b105e00d,pid:000bb008 scs
*链接信息:ROMTbl[0][1]:E0001000,CID:B105E00D,PID:000BB00A DWT
*JLink Info: ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB
romtableddr = 0xe00ff000
*JLink信息:复位:复位后停止核心通过DEMCR.VC_CORERESET.
*JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
Target info:
-------------
设备:ARMCM0
VTarget = 3.300V
PIN状态:TCK:0,TDI:1,TDO:1,TMS:1,TRES:1,TRST:1
硬件断点:4
软件断点:8192
观察点:2
JTAG speed: 1000 kHz
load“c:\\ users \\ utente \\桌面\\ da1458x_dsps \\ v_5.150.2 \\ projects \\ target_apps \\ dsps \\ sps_device \\ keil_5 \\ out_580 \\ sps_device_580.axf”
*JLink信息:复位:复位后停止核心通过DEMCR.VC_CORERESET.
*JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
包括“c:\\ users \\ utente \\ desktop \\ da1458x_dsps \\ v_5.150.2 \\ projects \\ target_apps \\ dsps \\ sps_device \\ keil_5 \\ .. \\ .. \\ .. \\.. \\ .. \\ sdk_580 \\ sdk \\ common_project_files \\ misc \\ sysram_case23.ini“
/ *杀死按钮* * /
/ *定义按钮“重置dk580”,“包含../../misc/sysram_case23.ini”* /
RESET
*JLink信息:复位:复位后停止核心通过DEMCR.VC_CORERESET.
*JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
E long 0x50000012 = 0xa4
e long 0x50003308 = 0x2e
加载%L.
*JLink信息:复位:复位后停止核心通过DEMCR.VC_CORERESET.
*JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
SP=\r单词(0x20000000)
$ = _RDWORD (0x20000004)
func void disp_memlog(void)
{
int idx;
unsigned int min_delta;
exec(“日志>Memlog.log");
printf(“\n\n***内存记录结果***\n\n”);
printf(">>> ENV HEAP <<<\n");
printf("Used size in this HEAP : %4d (current) - %4d (maximum)\n", mem_log[0].used_sz, mem_log[0].max_used_sz);
printf(“其他堆的使用大小:%4d(当前) - %4d(最大)\ n \ n”,mem_log [0] .used_other_sz,mem_log [0] .max_used_other_sz);
printf(">>> DB HEAP <<<\n");
printf(“此堆中使用的大小:%4d(当前)-%4d(最大)\n”,mem\u log[1]。Used\u sz,mem\u log[1]。max\u Used\u sz);
printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n", mem_log[1].used_other_sz, mem_log[1].max_used_other_sz);
printf(“>>> msg heap <<< \ n”);
printf("Used size in this HEAP : %4d (current) - %4d (maximum)\n", mem_log[2].used_sz, mem_log[2].max_used_sz);
printf(“在其他堆中使用的大小:%4d(当前)-%4d(最大)\n\n”,mem\u log[2]。Used\u other\u sz,mem\u log[2]。max\u Used\u other\u sz);
printf(“>>>非Ret堆<<\n”);
printf(“此堆中的使用大小:%4d(当前) - %4d(最大)\ n”,mem_log [3] .use_sz,mem_log [3] .max_used_sz);
printf(“在其他堆中使用的大小:%4d(当前)-%4d(最大)\n\n”,mem\u log[3]。Used\u other\u sz,mem\u log[3]。max\u Used\u other\u sz);
exec(“注销”);
} // disp_memlog()结束
** jlink警告:CPU无法停止
*** JLINK错误:CPU运行时无法读取寄存器15(R15)
*** jlink错误:CPU正在运行时无法读取寄存器16(XPSR)
***JLink错误:CPU运行时无法读取寄存器0(R0)
***JLink错误:CPU运行时无法读取寄存器1(R1)
***JLink Error: Can not read register 2 (R2) while CPU is running
*** jlink错误:CPU运行时无法读取寄存器3(R3)
***JLink错误:CPU运行时无法读取寄存器4(R4)
* * * JLink错误:无法读取寄存器5 (R5)CPU is running
***JLink Error: Can not read register 6 (R6) while CPU is running
*** jlink错误:CPU运行时无法读取寄存器7(R7)
***JLink错误:CPU运行时无法读取寄存器8(R8)
***JLink错误:CPU运行时无法读取寄存器9(R9)
***JLink错误:CPU运行时无法读取寄存器10(R10)
*** jlink错误:CPU运行时无法读取寄存器11(R11)
***JLink Error: Can not read register 12 (R12) while CPU is running
***JLink错误:CPU运行时无法读取寄存器13(R13)
***JLink错误:CPU运行时无法读取寄存器14(R14)
*** JLINK错误:CPU运行时无法读取寄存器15(R15)
*** jlink错误:CPU正在运行时无法读取寄存器16(XPSR)
***JLink错误:CPU运行时无法读取寄存器17(MSP)
*** jlink错误:CPU运行时无法读取寄存器18(PSP)
***JLink Error: Can not read register 20 (CFBP) while CPU is running
也许任何睡眠模式都进入,因此jlink连接掉下来?
是否可以对此项目执行标准调试?
我是否被迫将串行端口用于DEBG?
一般来说有哪些限制/约束?
事先非常感谢,
毛里齐奥
你好Maurizio Malaspina,
DSP项目默认使用扩展睡眠模式,因此如果您将其更改为活动模式,请您现在可以让我如果您有同样的问题?
app_default_sleep_mode = ARCH_SLEEP_OFF ; // in user_config.h
谢谢,PM_DIALOG.
是的,非常感谢!
通过这种方式,调试器似乎正常工作。
您可以将一些链接发送给调试限制/要知道的内容,以便了解哪些调试限制和/或睡眠模式如何影响代码的行为?
Regards,
毛里齐奥
你好Maurizio Malaspina,
您可以参考ARM进行调试限制。我们没有任何文档描述这种限制。调试限制为4个断点,最多8个观察点。当您在扩展睡眠模式下运行项目时,调试器已关闭,因此这是您无法附加的原因。如果您发现任何答案有用,请将其标记为“已接受”。
谢谢,PM_DIALOG.