构建精细,但在启动调试器上获取以下内容。
Using uVusion 5.15, SDK 3.0.6, setting debugger to internal RAM as per the peripheral test,
Startup file seems the problem - if I comment it out the executable runs, but I can't see any BLE advertising. First question is wht is this startup file throwing errors?
Thanks - Chris
=============== || =================
jlink信息:
-------------
DLL: V4.96i, compiled Feb 19 2015 11:29:51
Firmware: J-Link OB-SAM3U128 V1 compiled Nov 28 2014 10:24:11
Hardware: V1.00
S / N:480054962
* JLINK信息:找到了带ID 0x0BB11477的SWD-DP
*JLink Info: Found Cortex-M0 r0p0, Little endian.
*JLink Info: FPUnit: 4 code (BP) slots and 0 literal slots
romtableaddr = 0xe00ff003.
Target info:
-------------
Device: ARMCM0
VTarget = 3.300V
State of Pins: TCK: 0, TDI: 0, TDO: 1, TMS: 1, TRES: 1, TRST: 1
硬件断点:4
软件断点:8192
观察点:2
JTAG speed: 16667 kHz
load“c:\\ dialogsemitools \\ da14580_dsps_3.150.2 \\ dk_apps \\ keil_projects \\ sps \\ sps_device \\ out \\ sps_device.axf”
***具有32768字节代码大小限制的限制版本
***Currently used: 15516 Bytes (47%)
Include "C:\\DialogSemiTools\\DA14580_DSPS_3.150.2\\dk_apps\\keil_projects\\sps\\sps_device\\..\\..\\..\\misc\\sysram_case23.ini"
/ *杀死按钮* * /
/* DEFINE BUTTON "Reset DK580" , "include ../../../misc/sysram_case23.ini" */
RESET
E long 0x50000012 = 0xa4
E long 0x50003308 = 0x2e
加载%L.
***具有32768字节代码大小限制的限制版本
***Currently used: 15516 Bytes (47%)
SP = _RDWORD (0x20000000)
$ = _RDWORD (0x20000004)
func void disp_memlog(void)
{
int idx;
unsigned int min_delta;
exec("log > Memlog.log");
printf("\n\n*** Memory Logging Results ***\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("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(“此堆中的使用大小:%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].used_other_sz, mem_log[3].max_used_other_sz);
exec(“注销”);
} // disp_memlog()结束
FUNC void displayvalues(void)
{
int idx;
unsigned int min_delta;
exec("log > MyValues.log");
printf("*** dbg_remaining_times[]\n");
for(idx = 0; idx <100; idx ++){
printf(“%d \ n”,dbg_remaining_times [idx]);
____________________^
***错误34,第51行:未定义的标识符
}
printf("*** dbg_sleep_times[]\n");
for(idx = 0; idx <100; idx ++){
printf(“%d \ n”,dbg_sleep_times [idx]);
____________________^
***错误34,第55行:未定义的标识符
}
printf("*** dbg_check_times[]\n");
for(idx = 0; idx <100; idx ++){
printf ("%d\n", dbg_check_times[idx]);
____________________^
***错误34,第59行:未定义的标识符
}
printf("\n\n==== RESULTS ====\n");
min_delta = 0xffffffff;
printf("delta max\n");
for(idx = 0; idx <100; idx ++){
int result;
if(dbg_remaining_times [idx] <170)
________ ^
***error 34, line 66: undefined identifier
result = 625 + dbg_remaining_times[idx] - 170;
_____________________^
***error 34, line 67: undefined identifier
else
结果= dbg_remaining_times [idx] - 170;
_______________^
***error 34, line 69: undefined identifier
if(min_delta>结果)min_delta =结果;
printf ("%d\n", result);
}
printf("delta min\n");
for(idx = 0; idx <100; idx ++){
int result;
if (dbg_remaining_times[idx] < 400)
________ ^
***error 34, line 76: undefined identifier
result = 625 + dbg_remaining_times[idx] - 400;
_____________________^
***错误34,第77行:未定义的标识符
else
result = dbg_remaining_times[idx] - 400;
_______________^
***error 34, line 79: undefined identifier
if(min_delta>结果)min_delta =结果;
printf ("%d\n", result);
}
printf("mininum logged delta: %d\n", min_delta);
printf("SLP remaining time\n");
for(idx = 0; idx <100; idx ++){
printf(“%d \ n”,dbg_slp_rem [idx]);
____________________^
***错误34,第86行:未定义的标识符
}
printf(“最小记录的SLP REM时间:%d \ n”,dbg_slp_rem_min);
______________________________________________ ^
***错误34,第88行:未定义的标识符
printf(“最大记录的SLP REM时间:%d \ n”,dbg_slp_rem_max);
______________________________________________ ^
***error 34, line 89: undefined identifier
printf(“slp to clk补偿程序progray:%d \ n”,dbg_slp_rem_diff_min);
__________________________________________________________^
***错误34,第90行:未定义的标识符
exec(“注销”);
} // displayValues()结束
WS 1, `rxdesc
你好,克里斯,我将讨论这与美国团队is week. Quick Q : what target HW are you using ? BASIC or PRO or Expert kit or PAN1740 / Murata module ?
Thanks & BR
je_dialog
I'm using BASIC board
Rgsd - Chris
Hi Chris:
I do also see the errors due to startup file. I will communicate this to our development team. I do see advertisements in spite of the errors. Can you try loading another sample project. My suggestion is that you load the proximitiy reporter project from SDK 3.0.6: C:\DA1458x_SDK_3.0.6\dk_apps\keil_projects\proximity\reporter_fh. Lets check out if you can see the advertisement with this project. We will go from there.
Thanks,
tr_dialog.
That project doesn't throw errors, but i still don't see advertising
Used connection manager to verify that chip is OK - peripheral mode advertises OK
甚至更有趣 - 当IDOWNLOAD项目时,它简要宣传DIALIDDEMO。一旦我运行DSP项目,广告就会停止
Rgds - Chris
Hi,
你能解释一下你的意思吗?“外围模式宣传正常”
proximity reporter_fh is also a peripheral project.
Thanks,
tr_dialog.
I Mean that the peripheral advertising works fine when I enable it using connection manager (boot as peripheral) - tested using LightBlue on iOS
Only change I make to the project are the settings in the Keil Target Options for internal memory - as per the peripheral test project.
你能把你的版本的DSP项目发布在内存中的基本电囊上吗?如果这不起作用,则必须是一个刀具问题?
- 当我停止调试器时,广告开始,我也看到了来自Android应用的一些字符,使其成为USB串口
- I'm also a little confused as to why I can't get a standard sample to work on a standard eval board out of the box. If that doesn't work it doesn't bode well for the future :)
看起来我们在check_sys_startup_period(),第849行 - 时((getword16(sys_stat_reg)&dbg_is_up)== dbg_is_up){};
为什么DBG_IS_UP标志没有被断言?您能否确认他的SW实际上已经在基本董事会上进行了测试?它似乎在专家委员会上工作。
Hi Chris:
使用DSP的基本套件需要一些额外的步骤,如用户手册的第8.1节中所述。
Have you tried that configuration ?
Thanks,
tr_dialog.
Many Thanks for the reply.
Section 8.1 of the DSPS User Manual (UM-B-038)? That's how to get the serial port running. I'm not there yet - the advertisements aren't up & I can't connect.
Or is there some interplay I've missed? Eg the SW is bombing out because RTS is not set?
此外,为什么我不能在盲手连接上使用串行端口没有流量控制?我可以在另一个串口中电线,但ot似乎是不必要的麻烦?
Regards - Chris
Hi Chris:
Here are a few points we discussed on our phone conversation:
- You will have to stop the debugger for the M0 processor to execute the code. This is necessary because Deep sleep or extended sleep conflicts with the J-Link debugger. You have to stop the debugger for the device to start advertising. You can also disable (undefine) both sleep modes in the da14580_config.h file of each project, this will allow you to also use the debugger.
- 在使用基本套件的DSP项目时,需要一些额外的步骤来让数据在两个方向上移动。这些步骤在用户手册的第8.1节中概述。
- 专家套件可能是您的评估过程的更好平台。专家套件还允许您使用智能片段的功率计功能来实时监控电流消耗。您还可以连接外部电流仪表以测量峰值和睡眠模式电流。
Thanks,
tr_dialog.
Thanks . Yep, sleep mode is the culprit. Turn off deep sleep & the debugger is happy.
Also enable SW Flow control instead of HW flow control and the Segger UART works fine.
Closed.
我面临着使用专家套件的原始帖子的问题。
我应该怎么办?在用户手册的8.1节中专家套件没有额外的步骤。
我使用基本有问题Dev kit and DSPS ref design. The sps_device project compiles and downloads to the board using JTAG but device does not show up in the DSPS android app. I used SW_FLOW_CTRL:
#define CFG_UART_SW_FLOW_CTRL
#undef CFG_UART_HW_FLOW_CTRL
Stopping the debug does not help either.
Downloading using SmartSnippets won't make any difference either.
Same problem happens with my custom board using DA14580_1.
能否请你帮忙?
Hi behzad,
检查您的FTDI连接,如果您的连接正常,请删除睡眠配置以调试程序并查看程序卡在哪里。
谢谢mt_dialog。
Hi, thanks for your reply
现在,基本DEV板与DSP配合使用并宣传设备。
但是,我的自定义板上的代码在DSPS Android应用程序中没有宣传并且不会出现。我在50OHM天线中使用了Cuck模式的REF设计,并使用了3.3nh电感非常靠近芯片。当DSP下载并且调试器停止时,我从RFIOP探测器探测器,在DEV板中的范围(大约50mV大约为50mV之外)我可以观察到良好的信号。定制板使用此小天线:http://www.farnell.com/datasheets/1819371.pdfwith matching pi circuit (without the matching components yet).
How important the 50ohm impedance matching is?
为什么当DSP运行时,你认为我没有看到任何信号?
我需要改变什么在需求方对我的c代码吗ustom board (apart from GPIO allocations)?
我真的很感激你的帮助。
Thank you