嗨,我刚开始在DA14580专家板上工作,并试图运行UM-B-050中记录的接近报告演示,但智能手机应用程序不会检测到任何广告包。
以下是我的配置:Keil 5.16a IDE、SDK 5.0.2.1、DA14580专家板、USB加密狗。该板连接到桌面,加密狗连接到笔记本电脑。
以下是我所做的:
(1)在Keil加载Blinky演示并成功构建应用程序。启动调试会话并将图像加载到目标,LED灯呈闪烁。
(2)从da1458x_sdk \ 5.0.2.1 \ projects \ target_apps \ ble_examples \ prox_reporter \ keil_5 \ prox_reporter.uvprojx中加载keil中的接近报告演示。该构建有一个警告,但看起来良性。启动调试会话并立即在0x200004a4停止,调用堆栈显示reset_handler。命令窗口的输出如下:
以代码大小限制运行:32K
*JLink信息:已选择设备“CORTEX-M0”。
设置JLink项目文件为"C:\DA1458x_SDK\5.0.2.1\projects\target_apps\ble_examples\prox_reporter\Keil_5\JLink settings .ini"* JLink Info: Device " cortexm0 " selected。
JLink信息:
------------
DLL: V5.02b,编译于2015年9月8日18:47:15
固件:J-Link ARM Lite V8已编译2014年10月29日09:03:16
硬件:V8.00
序列号:228205529
功能(s): GDB
*JLink信息:找到ID为0x0BB11477的SWD-DP
* jlink信息:找到cortex-m0 r0p0,小endian。
* jlink信息:fpUnit:4代码(BP)插槽和0个字幕插槽
*JLink信息:CoreSight组件:
* jlink信息:romtbl 0 @ E00FF000
* JLink Info: ROMTbl 0 [0]: FFF0F000, CID: B105E00D, PID: 000BB008 SCS
* jlink信息:romtbl 0 [1]:fff02000,cid:b105e00d,pid:000bb00a dwt
*JLink Info:ROMTbl 0[2]:FFF03000,CID:B105E00D,PID:000BB00B FPB
ROMTableAddr=0xE00FF003
目标信息:
------------
设备:ARMC0.
V目标=2.963V
引脚状态:TCK:0、TDI:0、TDO:0、TMS:1、TRES:1、TRST:1
硬件断点:4
软件断点:8192
观察点:2
JTAG速度:2000 kHz
包括“C: \ \ \ \ DA1458x_SDK \ \ 5.0.2.1 \ \项目target_apps \ \ ble_examples \ \ prox_reporter \ \ Keil_5 \\..\\..\\..\\..\\..\\ sdk \ \ common_project_files \ \ misc \ \ sysram_case23.ini”
/*终止按钮**/
/*定义按钮“重置DK580”,“包括../../../misc/sysram_case23.ini”*/
重启
E长0x50000012 = 0xa4
E长0x50003308=0x2e
加载%L
***具有32768字节代码大小限制的受限版本
***当前使用:26168字节(79%)
sp = _rdword(0x20000000)
$ = _RDWORD (0x20000004)
FUNC void disp_memlog(void)
{
int-idx;
无符号整数最小增量;
Exec(“log> 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(当前)-%4d(最大值)\n\n”,内存日志[0]。使用的内存日志[0]。最大使用的内存日志[0];
printf(“>>> db heap <<< \ n”);
printf(“此堆中的使用大小:%4d(当前) - %4d(最大)\ n”,mem_log [1] .used_sz,mem_log [1] .max_used_sz);
printf(“其他堆的使用大小:%4d(current) - %4d(最大)\ n \ n”,mem_log [1] .used_other_sz,mem_log [1] .max_used_other_sz);
printf(“>>>消息堆<<\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(“其他堆中的使用大小:%4d(当前) - %4d(最大)\ n \ n”,mem_log [2] .used_other_sz,mem_log [2] .max_used_other_sz);
printf(“>>>非Ret堆<\n”);
printf(“此堆中使用的大小:%4d(当前)-%4d(最大值)\n”,内存日志[3]。使用的内存日志[3]。最大使用的内存日志[3];
printf(“其他堆中的使用大小:%4d(current) - %4d(最大)\ n \ n”,mem_log [3] .used_other_sz,mem_log [3] .max_used_other_sz);
执行董事(“注销”);
}//disp_memlog()结束
(3) 我尝试重置CPU,然后运行。目标似乎处于循环中,智能手机BLE应用程序没有检测到任何东西。
我批评这个论坛中的线程,发现一些线程提到了需要修改此演示的Keil4的项目文件。我需要对Keil5做同样的事情,我可以在哪里找到参考?
提前谢谢你的帮助。
Zheshen,
日志看起来很正常。什么您指的智能手机应用程序?您是否在Android中尝试过IOS和BLE Scanner的LightBlue?
谢谢,MH_对话
嗨,MH_Dialog,
我在Android中使用了BLE扫描仪,并找不到任何东西。
我在启动调试会话后附加了一个屏幕截图,似乎应用程序没有进入主界面。
我还尝试了一些其他外围示例,他们都没有问题。尝试了BLE_APP_PROFILE演示并获得相同的崩溃。
你好,
您需要去附着(停止)调试器。代码执行将在启用SleepMode并且调试器正在运行时暂停。我认为这是你的问题。
da1458x_config_basic.h中未定义两种睡眠模式(在所有项目文件中找不到CFG_EXT_sleep和CFG_DEEP_sleep)
# undef CFG_MEM_MAP_EXT_SLEEP
#undef cfg_mem_map_deep_sleep.
重新生成所有并使用调试器运行,代码执行与以前一样暂停。退出调试器会话并使用BLE扫描程序扫描,但仍然未找到任何内容。
你好,
在SDK5中启用/禁用睡眠模式的正确方法如下所示。(user_config.h的第37行)
请试试。
app_default_sleep_mode的默认值是sdk5中的arch_sleep_off,我没有改变它。重建所有和仍然是一样的。
我假设我应该恢复da1458x_configu_basic.h中的更改?
是,请还原到原始代码库。还请确保您配置了正确的硬件。这是在user_periph_setup的硬件配置向导中完成的。h:
(第35行和前进)。您可以打开文件,然后单击“配置向导”选项卡以从下拉菜单中选择Devkit或直接在代码中编辑。
我希望有所帮助。
在user_peripher_setup .h中将硬件配置设置为Expert(3)。da1458x_configu_basic.h中的更改被恢复。重新生成所有文件并像以前一样暂停执行。
您是否尝试使用BlueLoupe(Android)或LightBlue(iOS)扫描设备?addr 0x200004A4处的黄色箭头并不表示设备未运行-我有完全相同的东西,并且我的设备正在按预期进行广告。如果您仍然无法看到广告,请尝试使用空模板项目。该项目独立于硬件,并将在加载后立即开始广告。
我尝试了LightBlue (IOS)和BLEScanner (Android),但都没有广告包。
我比较了眨眼和接近报告之间的目标选项,我发现的唯一不同的是,在眨眼项目的目标选项卡上,iRom1were的开始和大小设置为0x2000000 / 0x8000,iram1were的开始和大小设置为0x2008000/ 0x2800(根据UM-B-014),但是对于接近报告项目,未设置这些地址和大小。那么我应该设置这些选项,如果我应该,那将是正确的值?(我试图重用眨眼值,但它们不起作用)。
此外,我不认为我开始调试会话后运行了该应用程序。在击中RUN命令(F5)后,执行暂停在0x20000C40上的执行,并未启用停止代码执行按钮。我制作了一个屏幕截图并附上它。
你好,
您不应该操纵iRAM设置。硬件或SDK中的某些内容导致了问题。我建议youtry解压SDK5的新副本,这次使用模板项目。如果这样做有效,我们将尝试proximty reporter,查看您的硬件中是否有导致问题的原因。
SDK5中您提到的模板项目的完整路径是什么?我尝试使用SDK5的新副本,并在projects/target\u apps\template下构建了空的\u peripheral\u模板,但遇到了相同的问题。
明天我将尝试另一块DA14580板,并让您知道结果。
谢谢你的帮助。
你好,
你有正确的项目路径。应该没有问题。明天我会密切关注你在不同硬件上的测试结果。
你好,
我再次尝试使用不同的DA14580专家板,然后在新笔记本电脑上使用新安装的SDK/Keil5尝试了两种板,我对所有组合都有一致的观察结果:
(1) blinky演示在所有的板和所有的计算机上工作。
(2)邻近报告和模板项目构建和加载精细,但执行停止(禁用停止按钮)。重复按RUN(F5)按钮导致0x20000C40的执行停止,禁用停止按钮。
(3)重置CPU,然后运行(F5)似乎得到执行运行(现在已启用停止按钮)。按下停止按钮停止在0x00000500和0x00000900之间的代码执行。在执行时,虚拟COM端口上存在非有意义的输出。但是,使用LightBlue和BLE Scanner应用程序扫描没有检测到任何广告数据包。
您的设置中必须有一些东西。我会脱机联系你,所以我们可以讨论。
嗨,我的专家套件也有同样的问题。IE。所有外设示例工作,但__Main后,BLE示例不起作用,切勿跳转到Main_Func。我读到某个地方是由于芯片版本?(需要V01不是v00?)如果你弄清楚问题,请告诉我。谢谢你。
事实证明,正如飞床所猜测的那样,问题在于子板版本。感谢MHv_Dialog给我发送了一个新的子板,我一插上电源就能工作。