你好,我刚刚开始在DA14580专家板上工作,并试图运行UM-B-050中记录的接近报告演示,但智能手机应用程序不会检测到任何广告包。
以下是我的配置:Keil 5.16a IDE, SDK 5.0.2.1, DA14580 Expert board, USB dongle。板子连接台式电脑,狗连接笔记本电脑。
以下是我所做的:
(1)在Keil中加载Blinky demo并成功构建app。启动调试会话并将图像加载到目标上,LED灯闪烁。
(2)在Keil中加载接近报告演示,从DA1458x_SDK\5.0.2.1\projects\target_apps\ble_examples\prox_reporter\Keil_5\prox_reporter.uvprojx。该构建有一个警告,但看起来是良性的。启动一个调试会话,PC立即在0x200004A4停止,调用堆栈显示Reset_Handler。Command窗口的输出如下:
运行代码大小限制:32K
* JLink信息:设备“CORTEX-M0”被选中。
将JLink项目文件设置为“C:\ da1458x_sdk \ 5.0.2.1 \ projects \ target_apps \ ble_examples \ prox_reporter \ keil_5 \ jlinksettings.ini”* jlink信息:设备“cortex-m0”所选。
JLink信息:
------------
DLL:v5.02b,编译9月8日2015年18:47:15
固件:J-Link ARM Lite V8编译Oct 29 2014 09:03:16
硬件:V8.00
S / N: 228205529
特征:GDB
* JLink Info: Found SWD-DP with ID 0x0BB11477
* 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]:fff0f000,cid:b105e00d,pid:000bb008 scs
* JLink Info: ROMTbl 0 [1]: FFF02000, CID: B105E00D, PID: 000BB00A DWT
* JLink Info: ROMTbl 0 [2]: FFF03000, CID: B105E00D, PID: 000BB00B FPB
ROMTableAddr = 0 xe00ff003
目标信息:
------------
设备:ARMCM0
VTarget = 2.963 v
引脚状态:TCK: 0, TDI: 0, TDO: 0, TMS: 1, TRES: 1, TRST: 1
Hardware-Breakpoints: 4
Software-Breakpoints: 8192
监测点:2
JTAG速度:2000khz
包括“c:\\ da1458x_sdk \\ 5.0.1 \\ projects \\ target_apps \\ ble_examples \\ prox_reporter \\ keil_5 \\ .. \\ .. \\ .. \\ .. \\ .. \ .. \\ .. \\ .. \ \ ......\\ common_project_files \\ misc \\ sysram_case23.ini“
/*杀死按钮* */
/* DEFINE BUTTON "Reset DK580", "include ../../misc/sysram_case23.ini
重置
e long 0x50000012 = 0xA4
E long 0x50003308 = 0x2e
负载% L
***限制版本与32768字节码大小限制
***当前使用:26168字节(79%)
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(“此堆中的使用大小:%4d(当前) - %4d(最大)\ n”,mem_log [0] .use_sz,mem_log [0] .max_used_sz);
printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n", mem_log[0]. printf("Used size in other HEAPs: %4d (current) - %4d (maximum)\n\n")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]. 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 HEAP <<<\n");
printf(“此堆中的使用大小:%4d(当前) - %4d(最大)\ 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]. 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("Used size in this HEAP: %4d (current) - %4d (maximum)\n", mem_log[3]. printf("Used size in this HEAP: %4d (current) - %4d (maximum)\n",used_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()结束
(3)我尝试重启CPU,然后运行。目标似乎处于一个循环中,智能手机BLE应用程序没有检测到任何东西。
我浏览了这个论坛的线程,发现一些线程提到Keil4的项目文件需要为这个演示修改。我需要对Keil5做同样的事情吗?我在哪里可以找到参考资料?
提前感谢您的帮助。
嗨Zheshen,
日志看起来像普通。什么你指的是智能手机应用?你试过iOS的浅蓝色和Android的ble扫描仪吗?
谢谢,MH_Dialog
嗨,MH_Dialog,
我在Android上使用BLE扫描仪,没有发现任何东西。
在我开始调试会话后,我附加了一个屏幕截图,似乎应用程序没有到达主界面。
我还尝试了其他一些外围示例,它们都通过了,没有问题。尝试ble_app_profile演示,得到同样的崩溃。
你好,
您需要解除(停止)调试器。当启用休眠模式且调试器正在运行时,代码执行将暂停。我认为这是你的问题。
未定义da1458x_config_basic.h中的两种睡眠模式(无法在所有项目文件中找到CFG_EXT_SLEEP和CFG_DEEP_SLEEP)
#undef cfg_mem_map_ext_sleep.
# undef CFG_MEM_MAP_DEEP_SLEEP
重新构建所有代码并使用调试器运行,代码执行会像以前一样暂停。退出调试器会话,并用BLE Scanner扫描,仍然一无所获。
你好,
在SDK5中启用/禁用睡眠模式的正确方法如下所示。(user_config.h的第37行)
请尝试一下。
在SDK5中,app_default_sleep_mode的默认值是ARCH_SLEEP_OFF,我没有更改它。全部重建,还是一样。
我假设我应该恢复da1458x_configu_basic.h ?
是的,请恢复到原始代码库。还请确保配置了正确的硬件。这是在硬件配置向导user_peripher_setup .h中完成的:
(第35行及前面)。你可以打开文件,点击“配置向导”选项卡从下拉菜单中选择你的devkit,或者直接在代码中编辑。
我希望这对你有所帮助。
硬件配置被设置为user_periph_setup.h中的专家(3)。恢复了da1458x_configu_basic.h中的更改。重建所有和执行以前暂停。
你是否尝试使用BlueLoupe (Android)或LightBlue (iOS)扫描设备?addr 0x200004A4上的黄色箭头并不表示设备没有运行——我有完全相同的东西,我的设备正在按照预期发布广告。如果您仍然不能看到广告,请尝试空模板项目代替。它是独立于硬件的,一旦加载,就会开始发布广告。
我尝试了闪烁(iOS)和Blescanner(Android),没有广告数据包。
我比较和作品之间的选择目标接近报告,唯一不同的,我发现是作品的目标选项卡项目的启动和大小iROM1were设置为0 x2000000/0x8000和iRAM1were的开始和大小设置为0 x2008000/0x2800(根据嗯- b - 014),然而,对于Proximity Report项目,这些地址和大小没有设置。我是否应该设置这些选项,如果应该,正确的值是什么?(我试着重新使用Blinky的值,但他们没有工作)。
我也不认为应用程序运行后,我开始调试会话。在我按下Run命令(F5)后,执行立即在0x20000C40处暂停,停止代码执行按钮从未启用。我做了一个屏幕截图,并将其附在下面。
你好,
你不应该操纵iRAM设置。您的硬件或SDK中的某些东西造成了问题。我建议您尝试解压一个SDK5的新副本,并使用这次的模板项目。如果成功,我们将尝试接近报告,看看是否在您的硬件中有什么东西导致了这个问题。
在SDK5中,你上面提到的模板项目的完整路径是什么?我尝试使用SDK5的新副本,并在projects/target_apps\template下构建empty_peripheral_template,出现了同样的问题。
明天我会再试DA14580板,并让你知道结果。
谢谢您的帮助。
你好,
您有正确的项目路径。应该没有问题。明天我会留意你用不同硬件测试的结果。
你好,
我再次尝试了不同的DA14580专家板,然后也尝试了两个板与新安装的SDK/Keil5在一个新的笔记本电脑上,我有一致的观察所有组合:
(1)Blinky Demo在所有板和所有计算机上工作。
(2)接近报告和模板项目构建和加载都很好,但随后执行停止(停止按钮禁用)。重复按Run (F5)按钮导致执行在0x20000C40停止,停止按钮被禁用。
(3)重置CPU,然后运行(F5)似乎得到执行(停止按钮现在启用)。按下stop按钮停止0x00000500和0x00000900之间的代码执行。在执行过程中,虚拟com端口上有一些没有意义的输出。然而,使用淡蓝色和BLE Scanner应用程序扫描并没有检测到任何广告包。
你的设计肯定有问题。我会离线联系你,我们可以讨论一下。
你好,我的专家工具包也有同样的问题。ie。所有外围的例子都可以工作,但是ble例子在__main之后不工作,永远不会跳转到main_func。我在哪儿读到过这是芯片版本的问题?(需要v01而不是v00?)如果你解决了这个问题,也请让我知道。谢谢你!
事实证明,由于飞行被飞行而猜测,问题是女儿板版本。感谢MHV_DIALOG向我发送新的女儿板,一旦插入就职。