你好,
我正在运行“DA1458x_DSPS\v_5.150.2\projects\target_apps\dsps\sps_device\Keil_5\sps_device”。在DA14580DEVKIT-PRO上的RAM中。
我无法检测在我的Android设备(华为P9 Lite)上运行您的DSPS App 3.210.4(2017年7月25日)的设备。
这个演示的正确步骤是什么?
非常感谢,
莫里吉奥
关键词:
设备:
嗨Maurizio Malaspina,
默认的dpsp_device应用程序代码使用硬件流控制。请检查头文件user_外围_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
谢谢你的回复。
跳线是正确配置的UART与HW流量控制通信。
我已经重建了目标,现在我可以看到“对话- sps”设备检测到我的Android智能手机的蓝牙。
现在的问题是调试停止了。
我可以在Keil IDE的“命令”窗口中看到:
运行代码大小限制:32K
将JLink项目文件设置为"C:\Users\Utente\Desktop\DA1458x_DSPS\v_5.150.2\projects\target_apps\dsps\sps_device\Keil_5\JLinkSettings.ini"* JLink Info: Device " cortexm0 " selected。
JLink信息:
------------
DLL: V6.32i,编译于2018年7月24日15:19:55
固件:J-Link obs - sam3u128 V1编译2018.7.12 12:17:48
硬件:V1.00
S / N: 480068119
* JLink Info: Found SW-DP with ID 0x0BB11477
* JLink信息:扫描AP地图,以找到所有可用的AP
* JLink信息:AP[1]:停止AP扫描作为AP地图的结束已经到达
* JLink Info: AP[0]: AHB-AP (IDR: 0x04770021)
* JLink信息:迭代通过AP地图找到AHB-AP使用
* JLink Info: AP[0]: Core found
* JLink Info: AP[0]: AHB-AP ROM base: 0xE00FF000
* JLink Info: CPUID register: 0x410CC200。实现代码:0x41 (ARM)
* JLink Info: Found Cortex-M0 r0p0, Little endian。
* JLink Info: FPUnit: 4 code (BP)插槽和0字面值插槽
* JLink信息:corelight组件:
* JLink信息:ROMTbl[0] @ E00FF000
* JLink Info: ROMTbl[0][0]: E000E000, 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 fbb
ROMTableAddr = 0 xe00ff000
* JLink信息:Reset:通过demcr . vc_coreset重置后停止核心。
* JLink信息:Reset:通过AIRCR.SYSRESETREQ重置设备。
目标信息:
------------
设备:ARMCM0
VTarget = 3.300 v
引脚状态:TCK: 0, TDI: 1, TDO: 1, TMS: 1, TRES: 1, TRST: 1
Hardware-Breakpoints: 4
Software-Breakpoints: 8192
监测点:2
JTAG速度:1000千赫
包括“C: \ \用户桌面\ \ Utente \ \ \ \ \ \ DA1458x_DSPS \ \ v_5.150.2 \ \项目target_apps \ \ \ \ sps_device \ \ Keil_5 \\..\\..\\..\\..\\..\\ sdk_580 \ \ sdk \ \ common_project_files \ \ misc \ \ sysram_case23.ini”
/*关闭按钮* */
/* DEFINE BUTTON "Reset DK580", "include ../../misc/sysram_case23.ini
重置
* JLink信息:Reset:通过demcr . vc_coreset重置后停止核心。
* JLink信息:Reset:通过AIRCR.SYSRESETREQ重置设备。
E长0x50000012 = 0xa4
E长0x50003308 = 0x2e
负载% L
* JLink信息:Reset:通过demcr . vc_coreset重置后停止核心。
* JLink信息:Reset:通过AIRCR.SYSRESETREQ重置设备。
SP = _RDWORD (0x20000000)
$ = _RDWORD (0x20000004)
函数void disp_memlog(空白)
{
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("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n"), mem_log[0]。used_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]。used_sz, mem_log [1] .max_used_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("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n"), mem_log[2]。used_other_sz, mem_log [2] .max_used_other_sz);
printf(">>> Non-Ret HEAP <<<\n");
printf("Used size in this HEAP: %4d (current) - %4d (maximum)\n"), mem_log[3]。used_sz, mem_log [3] .max_used_sz);
printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n"), mem_log[3]。used_other_sz, mem_log [3] .max_used_other_sz);
exec(“注销”);
} / / disp_memlog()结束
**JLink警告:CPU无法停止
***JLink Error: Can not read register 15 (R15) while CPU正在运行
***JLink Error: Can not read register 16 (XPSR) while CPU is running .(无法读取XPSR寄存器16
***JLink Error: Can not read register 0 (R0) while CPU正在运行
***JLink Error: Can not read register 1 (R1) while CPU正在运行
***JLink Error: Can not read register 2 (R2) while CPU正在运行
***JLink Error: Can not read register 3 (R3) while CPU正在运行
***JLink Error: Can not read register 4 (R4) while CPU正在运行
***JLink Error: Can not read register 5 (R5) while CPU正在运行
***JLink Error: Can not read register 6 (R6) while CPU正在运行
***JLink Error: Can not read register 7 (R7) while CPU正在运行
***JLink Error: Can not read register 8 (R8) while CPU正在运行
***JLink Error: Can not read register 9 (R9) while CPU正在运行
***JLink Error: Can not read register 10 (R10) while CPU正在运行
***JLink Error: Can not read register 11 (R11) while CPU正在运行
***JLink Error: Can not read register 12 (R12) while CPU正在运行
***JLink Error: Can not read register 13 (R13) while CPU正在运行
***JLink Error: Can not read register 14 (R14) while CPU正在运行
***JLink Error: Can not read register 15 (R15) while CPU正在运行
***JLink Error: Can not read register 16 (XPSR) while CPU is running .(无法读取XPSR寄存器16
***JLink Error: Can not read register 17 (MSP) while CPU正在运行
***JLink Error: Can not read register 18 (PSP) while CPU正在运行
***JLink Error: Can not read register 20 (CFBP) while CPU正在运行
有什么问题吗?
先谢谢你,
莫里吉奥
嗨Maurizio Malaspina,
你可以运行它与热连接调试器,以找到哪里固件崩溃?当代码崩溃的时候?当你试图从你的电话连接?既然你下载了系统ram的固件,DA14580开始发布广告?你能检查一下SmartSnipptes工具箱的功率分析器吗?
谢谢,PM_Dialog
谢谢你的回复。
我已经正确地指出了“.....\DA1458x_DSPS\v_5.150.2\projects\target_apps\dsps\sps_device\Keil_5\JLinkSettings.ini”初始化文件在KEIL uVision IDE中的“目标'spds_device_580'选项”的调试选项卡中。
以这种方式没有崩溃发生在RAM中调试和启动“对话- sps”应用程序在我的Android智能手机上我的“对话- sps”设备被发现。
尽管如此,在调试期间不能建立连接。
如果我上传应用程序在RAM中使用“booter”工具提供的“SmartSnippet工具箱v.5.0.6.2196”应用程序运行和连接可以建立!
为什么应用程序在调试期间不能正常运行?
嗨Maurizio Malaspina,
>>尽管如此,在调试时不能建立连接。
你的意思是你有调试器热连接,你不能连接?
>>如果我上传应用程序在RAM使用“booter”工具提供的“smartnippet工具箱v.5.0.6.2196”应用程序运行和连接可以建立!
你能解释一下吗?你是说你把固件下载到SPI Flash里了吗?
谢谢,PM_Dialog
谢谢您的回复,请原谅我的延误。
>>你的意思是你有调试器热连接,你不能连接?
确切地说(见附件“Picture_1.png”)
我注意到一个“***错误10:语法错误”在命令提示符,当我启动调试会话。
你能解释一下吗?你是说你把固件下载到SPI Flash里了吗?
我正在加载十六进制文件到芯片的主SysRAM(见“Picture_2.png”和“Picture_2.png”附件)和DIALOG_SPD设备检测(见“Screenshot_Android.png”)。
这是完整的命令提示符输出:
运行代码大小限制:32K
将JLink项目文件设置为"C:\Users\Utente\Desktop\DA1458x_DSPS\v_5.150.2\projects\target_apps\dsps\sps_device\Keil_5\JLinkSettings.ini"* JLink Info: Device " cortexm0 " selected。
JLink信息:
------------
DLL: V6.32i,编译于2018年7月24日15:19:55
固件:J-Link obs - sam3u128 V1编译2018.7.12 12:17:48
硬件:V1.00
S / N: 480068119
* JLink Info: Found SW-DP with ID 0x0BB11477
* JLink信息:扫描AP地图,以找到所有可用的AP
* JLink信息:AP[1]:停止AP扫描作为AP地图的结束已经到达
* JLink Info: AP[0]: AHB-AP (IDR: 0x04770021)
* JLink信息:迭代通过AP地图找到AHB-AP使用
* JLink Info: AP[0]: Core found
* JLink Info: AP[0]: AHB-AP ROM base: 0xE00FF000
* JLink Info: CPUID register: 0x410CC200。实现代码:0x41 (ARM)
* JLink Info: Found Cortex-M0 r0p0, Little endian。
* JLink Info: FPUnit: 4 code (BP)插槽和0字面值插槽
* JLink信息:corelight组件:
* JLink信息:ROMTbl[0] @ E00FF000
* JLink Info: ROMTbl[0][0]: E000E000, 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 fbb
ROMTableAddr = 0 xe00ff000
* JLink信息:Reset:通过demcr . vc_coreset重置后停止核心。
* JLink信息:Reset:通过AIRCR.SYSRESETREQ重置设备。
目标信息:
------------
设备:ARMCM0
VTarget = 3.300 v
引脚状态:TCK: 0, TDI: 1, TDO: 1, TMS: 1, TRES: 1, TRST: 1
Hardware-Breakpoints: 4
Software-Breakpoints: 8192
监测点:2
JTAG速度:1000千赫
加载用户" C: \ \ \ \ Utente桌面\ \ DA1458x_DSPS \ \ v_5.150.2 \ \ \ \ \ \ target_apps \ \项目需求方\ \ sps_device \ \ Keil_5 \ \ out_580 \ \ sps_device_580.axf”
* JLink信息:Reset:通过demcr . vc_coreset重置后停止核心。
* JLink信息:Reset:通过AIRCR.SYSRESETREQ重置设备。
包括“C: \ \ \ \ Utente \ \用户桌面\ \ DA1458x_DSPS \ \ v_5.150.2 \ \ \ \ target_apps \ \项目需求方\ \ sps_device \ \ Keil_5 \ \ JLinkSettings.ini”
(断点)
^
error 10:语法错误
你觉得哪里不对?
先谢谢你,
莫里吉奥
你好,莫里吉奥Malaspina
你能读一下吗教程8:调试方法从我们的支持网站的教程来看看你如何能在调试模式下运行代码?
谢谢,PM_Dialog
亲爱的PM_Dialog,
谢谢你的支持。
我已经成功地阅读了教程8的第一部分并将其付诸实践。
随后,我尝试在sps_device项目中执行相同的步骤。
第一次尝试失败了。我发现JLINK的默认初始化文件在“选项为目标'sps_device_580'——> Debug”标签是错误的。
正确的是“.. .\..\..\..\sdk_580\sdk\common_project_files\misc\sysram_case23.ini”。
这样,就不会再在命令提示符输出窗口中引发“*** error 10: Syntax error”。
在这个项目中,不幸的是,UART2端口被用作BLE上的UART的I/O终端,所以我不能像教程8中描述的那样激活“CFG_PRINTF”,但是调试将在KEIL IDE中启动。
通过这种配置,DIALOG-SPS应用程序能够检测到设备,并且所有设备都正常工作,但是JLINK会失去连接,从而阻止从IDE执行实时调试。
当连接失败时,命令提示符显示如下:
运行代码大小限制:32K
将JLink项目文件设置为"C:\Users\Utente\Desktop\DA1458x_DSPS\v_5.150.2\projects\target_apps\dsps\sps_device\Keil_5\JLinkSettings.ini"* JLink Info: Device " cortexm0 " selected。
JLink信息:
------------
DLL: V6.32i,编译于2018年7月24日15:19:55
固件:J-Link obs - sam3u128 V1编译2018.7.12 12:17:48
硬件:V1.00
S / N: 480068119
* JLink Info: Found SW-DP with ID 0x0BB11477
* JLink信息:扫描AP地图,以找到所有可用的AP
* JLink信息:AP[1]:停止AP扫描作为AP地图的结束已经到达
* JLink Info: AP[0]: AHB-AP (IDR: 0x04770021)
* JLink信息:迭代通过AP地图找到AHB-AP使用
* JLink Info: AP[0]: Core found
* JLink Info: AP[0]: AHB-AP ROM base: 0xE00FF000
* JLink Info: CPUID register: 0x410CC200。实现代码:0x41 (ARM)
* JLink Info: Found Cortex-M0 r0p0, Little endian。
* JLink Info: FPUnit: 4 code (BP)插槽和0字面值插槽
* JLink信息:corelight组件:
* JLink信息:ROMTbl[0] @ E00FF000
* JLink Info: ROMTbl[0][0]: E000E000, 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 fbb
ROMTableAddr = 0 xe00ff000
* JLink信息:Reset:通过demcr . vc_coreset重置后停止核心。
* JLink信息:Reset:通过AIRCR.SYSRESETREQ重置设备。
目标信息:
------------
设备:ARMCM0
VTarget = 3.300 v
引脚状态:TCK: 0, TDI: 1, TDO: 1, TMS: 1, TRES: 1, TRST: 1
Hardware-Breakpoints: 4
Software-Breakpoints: 8192
监测点:2
JTAG速度:1000千赫
加载用户" C: \ \ \ \ Utente桌面\ \ DA1458x_DSPS \ \ v_5.150.2 \ \ \ \ \ \ target_apps \ \项目需求方\ \ sps_device \ \ Keil_5 \ \ out_580 \ \ sps_device_580.axf”
* JLink信息:Reset:通过demcr . vc_coreset重置后停止核心。
* JLink信息:Reset:通过AIRCR.SYSRESETREQ重置设备。
包括“C: \ \用户桌面\ \ Utente \ \ \ \ \ \ DA1458x_DSPS \ \ v_5.150.2 \ \项目target_apps \ \ \ \ sps_device \ \ Keil_5 \\..\\..\\..\\..\\..\\ sdk_580 \ \ sdk \ \ common_project_files \ \ misc \ \ sysram_case23.ini”
/*关闭按钮* */
/* DEFINE BUTTON "Reset DK580", "include ../../misc/sysram_case23.ini
重置
* JLink信息:Reset:通过demcr . vc_coreset重置后停止核心。
* JLink信息:Reset:通过AIRCR.SYSRESETREQ重置设备。
E长0x50000012 = 0xa4
E长0x50003308 = 0x2e
负载% L
* JLink信息:Reset:通过demcr . vc_coreset重置后停止核心。
* JLink信息:Reset:通过AIRCR.SYSRESETREQ重置设备。
SP = _RDWORD (0x20000000)
$ = _RDWORD (0x20000004)
函数void disp_memlog(空白)
{
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("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n"), mem_log[0]。used_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]。used_sz, mem_log [1] .max_used_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("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n"), mem_log[2]。used_other_sz, mem_log [2] .max_used_other_sz);
printf(">>> Non-Ret HEAP <<<\n");
printf("Used size in this HEAP: %4d (current) - %4d (maximum)\n"), mem_log[3]。used_sz, mem_log [3] .max_used_sz);
printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n"), mem_log[3]。used_other_sz, mem_log [3] .max_used_other_sz);
exec(“注销”);
} / / disp_memlog()结束
**JLink警告:CPU无法停止
***JLink Error: Can not read register 15 (R15) while CPU正在运行
***JLink Error: Can not read register 16 (XPSR) while CPU is running .(无法读取XPSR寄存器16
***JLink Error: Can not read register 0 (R0) while CPU正在运行
***JLink Error: Can not read register 1 (R1) while CPU正在运行
***JLink Error: Can not read register 2 (R2) while CPU正在运行
***JLink Error: Can not read register 3 (R3) while CPU正在运行
***JLink Error: Can not read register 4 (R4) while CPU正在运行
***JLink Error: Can not read register 5 (R5) while CPU正在运行
***JLink Error: Can not read register 6 (R6) while CPU正在运行
***JLink Error: Can not read register 7 (R7) while CPU正在运行
***JLink Error: Can not read register 8 (R8) while CPU正在运行
***JLink Error: Can not read register 9 (R9) while CPU正在运行
***JLink Error: Can not read register 10 (R10) while CPU正在运行
***JLink Error: Can not read register 11 (R11) while CPU正在运行
***JLink Error: Can not read register 12 (R12) while CPU正在运行
***JLink Error: Can not read register 13 (R13) while CPU正在运行
***JLink Error: Can not read register 14 (R14) while CPU正在运行
***JLink Error: Can not read register 15 (R15) while CPU正在运行
***JLink Error: Can not read register 16 (XPSR) while CPU is running .(无法读取XPSR寄存器16
***JLink Error: Can not read register 17 (MSP) while CPU正在运行
***JLink Error: Can not read register 18 (PSP) while CPU正在运行
***JLink Error: Can not read register 20 (CFBP) while CPU正在运行
也许任何睡眠模式进入从而使JLINK连接下降?
是否有可能执行此项目的标准调试?
我是否被迫使用串行端口进行调试?
一般的限制/约束是什么?
非常感谢,
莫里吉奥
嗨Maurizio Malaspina,
DSPS项目默认使用的是延长睡眠模式,所以如果你把它改成活动模式,请问你现在是否有同样的问题?
app_default_sleep_mode = ARCH_SLEEP_OFF;/ /在user_config.h
谢谢,PM_Dialog
是的,非常感谢!
这样调试器就可以正常工作了。
你能给我发送一些调试限制的链接吗?为了理解什么是调试限制和/或睡眠模式如何影响代码的行为?
问候,
莫里吉奥
嗨Maurizio Malaspina,
您可以参考ARM进行调试限制。我们没有任何文档描述这种限制。调试限制是最多4个断点和最多8个观察点。当您在扩展睡眠模式下运行项目时,调试器将关闭,因此这就是您无法附加它的原因。如果你发现任何有用的答案,请标记为“已接受”。
谢谢,PM_Dialog