你好,
我正在运行“DA1458x_DSPS\v_5.150.2\projects\target_apps\dsps\sps_device\Keil_5\sps_device”。在DA14580DEVKIT-PRO上的RAM中。
我无法使用DSPS应用程序3.210.4(2017年7月25日)在我的Android设备(Huawey P9 Lite)上进行检测设备。
运行这个演示的正确程序是什么?
非常感谢你提前,
莫里吉奥
关键词:
设备:
嗨Maurizio Malaspina,
默认的dpsp_device应用程序代码使用硬件流控制。请检查user_peripher_setup .h头文件中的CFG_UART_HW_FLOW_CTRL。所以,如果你有Pro-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.
谢谢您的回复。
跳线正确配置为具有HW流量控制通信的UART。
我已经重新构建了目标,现在我可以看到我的Android智能手机的蓝牙检测到的“DIALOG-SPS”设备。
现在的问题是调试停止了。
我可以在Keil IDE的“命令”窗口看到:
使用代码大小限制: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编译Jul 12 2018 12:17:48
硬件:V1.00
S / N: 480068119
* jlink信息:找到带ID 0x0BB11477的SW-DP
* jlink信息:扫描AP地图查找所有可用的AP
* JLINK INFO:AP [1]:已停止AP扫描作为AP地图的结尾已到达
* JLINK INFO:AP [0]:AHB-AP(IDR:0x04770021)
* JLink信息:迭代通过AP地图找到AHB-AP使用
* jlink信息:AP [0]:找到核心
* JLink Info: AP[0]: AHB-AP ROM base: 0xE00FF000
* JLINK信息:CPUID寄存器:0x410cc200。实施者代码:0x41(手臂)
* JLink Info: Found Cortex-M0 r0p0, Little endian。
* JLink Info: FPUnit: 4代码(BP)槽和0文字槽
* jlink信息:Coresight组件:
* JLink Info: ROMTbl[0] @ E00FF000
* jlink信息:romtbl [0] [0]:e000u000,cid:b105e00d,pid:000bb008 scs
* JLink Info: ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 000BB00A DWT
* JLink Info: ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB
romtableddr = 0xe00ff000
* JLink Info: Reset:通过demcr . vc_coreeset重置后暂停核心。
* JLink Info: Reset:通过AIRCR.SYSRESETREQ重置设备。
目标信息:
-------------
设备:ARMCM0
VTarget = 3.300 v
引脚状态:TCK: 0, TDI: 1, TDO: 1, TMS: 1, TRES: 1, TRST: 1
硬件断点:4
软件断点:8192
看点:2
JTAG速度: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”* /
重置
* JLink Info: Reset:通过demcr . vc_coreeset重置后暂停核心。
* JLink Info: Reset:通过AIRCR.SYSRESETREQ重置设备。
E长0x50000012 = 0xa4
e long 0x50003308 = 0x2e
加载%L.
* JLink Info: Reset:通过demcr . vc_coreeset重置后暂停核心。
* JLink Info: Reset:通过AIRCR.SYSRESETREQ重置设备。
SP = _RDWORD (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]. printf("Used size in this HEAP: %4d (current) - %4d (maximum)\n",used_sz, mem_log [0] .max_used_sz);
printf(“其他堆中的尺寸:%4d(current) - %4d(最大)\ n \ n”,mem_log [0] .use_other_sz,mem_log [0] .max_used_other_sz);
printf(">>> DB HEAP <<<\n");
printf("Used size in this HEAP: %4d (current) - %4d (maximum)\n", mem_log[1]. printf("Used size in this HEAP: %4d (current) - %4d (maximum)\n",used_sz, mem_log [1] .max_used_sz);
printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n", mem_log[1]. printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n")used_other_sz, mem_log [1] .max_used_other_sz);
printf(“>>> msg堆<<< \ n”);
printf("Used size in this HEAP: %4d (current) - %4d (maximum)\n", mem_log[2]. printf("Used size in this HEAP: %4d (current) - %4d (maximum)\n",used_sz, mem_log [2] .max_used_sz);
printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n", mem_log[2]. printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n")used_other_sz, mem_log [2] .max_used_other_sz);
printf(">>>非ret堆<<<\n");
printf(“此堆中的使用大小:%4d(当前) - %4d(最大)\ n”,mem_log [3] .use_sz,mem_log [3] .max_used_sz);
printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n", mem_log[3]. printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n")used_other_sz, mem_log [3] .max_used_other_sz);
Exec(“注销”);
} // disp_memlog()结束
** jlink警告:CPU无法停止
*** JLINK错误:CPU运行时无法读取寄存器15(R15)
*** jlink错误:CPU正在运行时无法读取寄存器16(xpsr)
***JLink Error: Can not read register 0 (R0) while CPU is running . ***JLink Error: Can not read register 0 (R0) while CPU is running
***JLink Error: Can not read register 1 (R1) while CPU is running . ***JLink Error: Can not read register 1 (R1) while CPU is running
***JLink Error: Can not read register 2 (R2) while CPU is running . ***JLink Error: Can not read register 2 (R2) while CPU is running
*** jlink错误:CPU运行时无法读取寄存器3(R3)
***JLink Error: Can not read register 4 (R4) while CPU is running . ***JLink Error: Can not read register 4 (R4) while CPU is running
***JLink Error: Can not read register 5 (R5) while CPU is running . ***JLink Error: Can not read register 5 (R5) while CPU is running
***JLink Error: Can not read register 6 (R6) while CPU is running . ***JLink Error: Can not read register 6 (R6) while CPU is running
*** jlink错误:CPU运行时无法读取寄存器7(R7)
***JLink Error: Can not read register 8 (R8) while CPU is running . ***JLink Error: Can not read register 8 (R8) while CPU is running
***JLink Error: Can not read register 9 (R9) while CPU is running . ***JLink Error: Can not read register 9 (R9) while CPU is running
***JLink Error: Can not read register 10 (R10) while CPU is running . ***JLink Error: Can not read register 10 (R10) while CPU is running
*** JLINK错误:CPU运行时无法读取寄存器11(R11)
***JLink Error: Can not read register 12 (R12) while CPU is running . ***JLink Error: Can not read register 12 (R12) while CPU is running
***JLink Error: Can not read register 13 (R13) while CPU is running . ***JLink Error: Can not read register 13 (R13) while CPU is running
***JLink Error: Can not read register 14 (R14) while CPU is running . ***JLink Error: Can not read register 14 (R14) while CPU is running
*** JLINK错误:CPU运行时无法读取寄存器15(R15)
*** jlink错误:CPU正在运行时无法读取寄存器16(xpsr)
***JLink Error: Can not read register 17 (MSP) while CPU is running . ***JLink Error: Can not read register 17 (MSP) while CPU is running
*** JLINK错误:CPU运行时无法读取寄存器18(PSP)
***JLink Error: Can not read register 20 (CFBP) while CPU is running . ***JLink Error: Can not read register 20 (CFBP) while CPU is running
可能是什么问题?
先谢谢你,
莫里吉奥
嗨Maurizio Malaspina,
请你用热门附加调试器来运行它,以便找到固件崩溃的位置?代码崩溃时?当你试图从你手机连接?由于您将固件下载到System-RAM,因此DA14580开始广告?您能否请用SmartSnipptes Toolbox的Power Profiler检查它吗?
谢谢,PM_DIALOG.
谢谢您的回复。
在KEIL uVision IDE的“选项for target 'spds_device_580'”的调试选项卡中,我正确地指向了“.....\DA1458x_DSPS\v_5.150.2\projects\target_apps\dsps\sps_device\Keil_5\JLinkSettings.ini”初始化文件。
通过这种方式,在RAM中调试和在我的Android智能手机上启动“DIALOG-SPS”应用程序时不会发生崩溃,我的“DIALOG-SPS”设备会被找到。
尽管如此,在调试期间无法建立连接。
如果我使用“SmartSnippet Toolbox v.5.0.6.2196”提供的“booter”工具在RAM中上传应用程序,应用程序就可以运行并建立连接!
为什么应用程序在调试期间不能正常运行?
嗨Maurizio Malaspina,
>>尽管如此,调试期间还是无法建立连接。
你的意思是你有调试器热连接,你不能连接?
>>如果我使用“SmartSnippet Toolbox V.5.0.6.2196”提供的“Booter”工具在RAM中上传应用程序运行和连接可以建立连接!
你能解释一下吗?你的意思是你下载固件到SPI Flash?
谢谢,PM_DIALOG.
谢谢你的回复,对不起延迟。
>>你的意思是你已经热连接调试器,但你不能连接?
完全正确(参见附加的“Picture_1.png”)
当我启动调试会话时,我在命令提示符中注意到“*** error 10: Syntax error”。
你能解释一下吗?你的意思是你下载固件到SPI Flash?
我正在将hex文件加载到芯片的主SysRAM中(参见附加的“Picture_2.png”和“Picture_3.png”),并检测到DIALOG_SPD设备(参见“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编译Jul 12 2018 12:17:48
硬件:V1.00
S / N: 480068119
* jlink信息:找到带ID 0x0BB11477的SW-DP
* jlink信息:扫描AP地图查找所有可用的AP
* JLINK INFO:AP [1]:已停止AP扫描作为AP地图的结尾已到达
* JLINK INFO:AP [0]:AHB-AP(IDR:0x04770021)
* JLink信息:迭代通过AP地图找到AHB-AP使用
* jlink信息:AP [0]:找到核心
* JLink Info: AP[0]: AHB-AP ROM base: 0xE00FF000
* JLINK信息:CPUID寄存器:0x410cc200。实施者代码:0x41(手臂)
* JLink Info: Found Cortex-M0 r0p0, Little endian。
* JLink Info: FPUnit: 4代码(BP)槽和0文字槽
* jlink信息:Coresight组件:
* JLink Info: ROMTbl[0] @ E00FF000
* jlink信息:romtbl [0] [0]:e000u000,cid:b105e00d,pid:000bb008 scs
* JLink Info: ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 000BB00A DWT
* JLink Info: ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB
romtableddr = 0xe00ff000
* JLink Info: Reset:通过demcr . vc_coreeset重置后暂停核心。
* JLink Info: Reset:通过AIRCR.SYSRESETREQ重置设备。
目标信息:
-------------
设备:ARMCM0
VTarget = 3.300 v
引脚状态:TCK: 0, TDI: 1, TDO: 1, TMS: 1, TRES: 1, TRST: 1
硬件断点:4
软件断点:8192
看点:2
JTAG速度:1000 kHz
加载“C:\\ User \\ utente \\桌面\\ da1458x_dsps \\ v_5.150.2 \\ projects \\ target_apps \\ dsps \\ sps_device \\ keil_5 \\ out_580 \\ sps_device_580.axf”
* JLink Info: Reset:通过demcr . vc_coreeset重置后暂停核心。
* JLink Info: Reset:通过AIRCR.SYSRESETREQ重置设备。
包括“C: \ \ \ \ Utente \ \用户桌面\ \ DA1458x_DSPS \ \ v_5.150.2 \ \ \ \ target_apps \ \项目需求方\ \ sps_device \ \ Keil_5 \ \ JLinkSettings.ini”
(断点)
^
***错误10:语法错误
你认为哪里错了?
先谢谢你,
莫里吉奥
你好,莫里吉奥Malaspina
你能读一下吗教程8:调试方法从我们的支持网站上的教程,以看到如何在调试模式下运行代码?
谢谢,PM_DIALOG.
亲爱的PM_Dialog,
谢谢你的支持。
我已经成功地阅读并实践了教程8的第一部分。
随后,我尝试在sps_device项目中执行相同的步骤。
第一次尝试失败。我发现,“目标”sps_device_580' - > debug选项卡选项中指向的jlink的默认初始化文件指向的jlink指向的jlink呈现出错了。
正确的一个到点是“.. \ .. \ .. \ .. \ .. \ sdk_580 \ sdk \ common_project_files \ misc \ sysram_case23.ini”。
通过这种方式,在命令提示符输出窗口中没有更多“***错误10:语法错误”。
不幸的是,在这个项目中,UART2端口被用作BLE上的UART的I/O终端,因此我不能像第8教程中描述的那样激活“CFG_PRINTF”,但是调试在KEIL IDE中开始。
通过这种配置,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编译Jul 12 2018 12:17:48
硬件:V1.00
S / N: 480068119
* jlink信息:找到带ID 0x0BB11477的SW-DP
* jlink信息:扫描AP地图查找所有可用的AP
* JLINK INFO:AP [1]:已停止AP扫描作为AP地图的结尾已到达
* JLINK INFO:AP [0]:AHB-AP(IDR:0x04770021)
* JLink信息:迭代通过AP地图找到AHB-AP使用
* jlink信息:AP [0]:找到核心
* JLink Info: AP[0]: AHB-AP ROM base: 0xE00FF000
* JLINK信息:CPUID寄存器:0x410cc200。实施者代码:0x41(手臂)
* JLink Info: Found Cortex-M0 r0p0, Little endian。
* JLink Info: FPUnit: 4代码(BP)槽和0文字槽
* jlink信息:Coresight组件:
* JLink Info: ROMTbl[0] @ E00FF000
* jlink信息:romtbl [0] [0]:e000u000,cid:b105e00d,pid:000bb008 scs
* JLink Info: ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 000BB00A DWT
* JLink Info: ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB
romtableddr = 0xe00ff000
* JLink Info: Reset:通过demcr . vc_coreeset重置后暂停核心。
* JLink Info: Reset:通过AIRCR.SYSRESETREQ重置设备。
目标信息:
-------------
设备:ARMCM0
VTarget = 3.300 v
引脚状态:TCK: 0, TDI: 1, TDO: 1, TMS: 1, TRES: 1, TRST: 1
硬件断点:4
软件断点:8192
看点:2
JTAG速度:1000 kHz
加载“C:\\ User \\ utente \\桌面\\ da1458x_dsps \\ v_5.150.2 \\ projects \\ target_apps \\ dsps \\ sps_device \\ keil_5 \\ out_580 \\ sps_device_580.axf”
* JLink Info: Reset:通过demcr . vc_coreeset重置后暂停核心。
* JLink Info: Reset:通过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”* /
重置
* JLink Info: Reset:通过demcr . vc_coreeset重置后暂停核心。
* JLink Info: Reset:通过AIRCR.SYSRESETREQ重置设备。
E长0x50000012 = 0xa4
e long 0x50003308 = 0x2e
加载%L.
* JLink Info: Reset:通过demcr . vc_coreeset重置后暂停核心。
* JLink Info: Reset:通过AIRCR.SYSRESETREQ重置设备。
SP = _RDWORD (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]. printf("Used size in this HEAP: %4d (current) - %4d (maximum)\n",used_sz, mem_log [0] .max_used_sz);
printf(“其他堆中的尺寸:%4d(current) - %4d(最大)\ n \ n”,mem_log [0] .use_other_sz,mem_log [0] .max_used_other_sz);
printf(">>> DB HEAP <<<\n");
printf("Used size in this HEAP: %4d (current) - %4d (maximum)\n", mem_log[1]. printf("Used size in this HEAP: %4d (current) - %4d (maximum)\n",used_sz, mem_log [1] .max_used_sz);
printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n", mem_log[1]. printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n")used_other_sz, mem_log [1] .max_used_other_sz);
printf(“>>> msg堆<<< \ n”);
printf("Used size in this HEAP: %4d (current) - %4d (maximum)\n", mem_log[2]. printf("Used size in this HEAP: %4d (current) - %4d (maximum)\n",used_sz, mem_log [2] .max_used_sz);
printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n", mem_log[2]. printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n")used_other_sz, mem_log [2] .max_used_other_sz);
printf(">>>非ret堆<<<\n");
printf(“此堆中的使用大小:%4d(当前) - %4d(最大)\ n”,mem_log [3] .use_sz,mem_log [3] .max_used_sz);
printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n", mem_log[3]. printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n")used_other_sz, mem_log [3] .max_used_other_sz);
Exec(“注销”);
} // disp_memlog()结束
** jlink警告:CPU无法停止
*** JLINK错误:CPU运行时无法读取寄存器15(R15)
*** jlink错误:CPU正在运行时无法读取寄存器16(xpsr)
***JLink Error: Can not read register 0 (R0) while CPU is running . ***JLink Error: Can not read register 0 (R0) while CPU is running
***JLink Error: Can not read register 1 (R1) while CPU is running . ***JLink Error: Can not read register 1 (R1) while CPU is running
***JLink Error: Can not read register 2 (R2) while CPU is running . ***JLink Error: Can not read register 2 (R2) while CPU is running
*** jlink错误:CPU运行时无法读取寄存器3(R3)
***JLink Error: Can not read register 4 (R4) while CPU is running . ***JLink Error: Can not read register 4 (R4) while CPU is running
***JLink Error: Can not read register 5 (R5) while CPU is running . ***JLink Error: Can not read register 5 (R5) while CPU is running
***JLink Error: Can not read register 6 (R6) while CPU is running . ***JLink Error: Can not read register 6 (R6) while CPU is running
*** jlink错误:CPU运行时无法读取寄存器7(R7)
***JLink Error: Can not read register 8 (R8) while CPU is running . ***JLink Error: Can not read register 8 (R8) while CPU is running
***JLink Error: Can not read register 9 (R9) while CPU is running . ***JLink Error: Can not read register 9 (R9) while CPU is running
***JLink Error: Can not read register 10 (R10) while CPU is running . ***JLink Error: Can not read register 10 (R10) while CPU is running
*** JLINK错误:CPU运行时无法读取寄存器11(R11)
***JLink Error: Can not read register 12 (R12) while CPU is running . ***JLink Error: Can not read register 12 (R12) while CPU is running
***JLink Error: Can not read register 13 (R13) while CPU is running . ***JLink Error: Can not read register 13 (R13) while CPU is running
***JLink Error: Can not read register 14 (R14) while CPU is running . ***JLink Error: Can not read register 14 (R14) while CPU is running
*** JLINK错误:CPU运行时无法读取寄存器15(R15)
*** jlink错误:CPU正在运行时无法读取寄存器16(xpsr)
***JLink Error: Can not read register 17 (MSP) while CPU is running . ***JLink Error: Can not read register 17 (MSP) while CPU is running
*** JLINK错误:CPU运行时无法读取寄存器18(PSP)
***JLink Error: Can not read register 20 (CFBP) while CPU is running . ***JLink Error: Can not read register 20 (CFBP) while CPU is running
也许任何睡眠模式都进入,因此jlink连接掉下来?
是否可能执行此项目的标准调试?
我是否被迫将串行端口用来DEBG?
一般的限制/约束是什么?
提前非常感谢,
莫里吉奥
嗨Maurizio Malaspina,
默认使用扩展睡眠模式默认情况下,DSP项目是默认情况下,因此如果将其更改为活动模式,请您现在可以让我如果您有同样的问题?
app_default_sleep_mode = ARCH_SLEEP_OFF;/ /在user_config.h
谢谢,PM_DIALOG.
是的,非常感谢!
通过这种方式,调试器似乎正常工作。
你能否向我发送一些链接到调试限制/要知道的内容,以便了解哪些调试限制和/或睡眠模式如何影响代码的行为?
问候,
莫里吉奥
嗨Maurizio Malaspina,
您可以参考手臂进行调试限制。我们没有描述这种限制的任何文档。调试限制为4个断点,最多8个观察点。当您在扩展睡眠模式下运行项目时,调试器已断电,因此您无法附加的原因。如果您发现任何答案有用,请将其标记为“已接受”。
谢谢,PM_DIALOG.