你好,
我仍然是新的编程固件与keil和da14580DEVKT-B sdk板。
当我编译和调试之前,我没有问题运行样例代码。
然而,在我的Jlink固件升级后,不知怎的,当我调试时,这个错误突然出现:
***错误125,第10行:AGDI:内存写失败(0x50000012)
下面是在Keil中运行调试的输出。
运行代码大小限制:32K
将JLink项目文件设置为“C: a\DA1458x\5.0.4\projects\target_apps\ble_examples\ble_app_peripheral\Keil_5\JLink settings .ini”* JLink Info: Device“CORTEX-M0”selected。
JLink信息:
------------
DLL: V6.46d,编译于2019年6月7日17:33:40
固件:J-Link OB-SAM3U128 V1 compiled Jan 7 2019 14:05:40
硬件:V1.00
S / N: 480063501
* JLink Info: Found SW-DP with ID 0x0BB11477
* JLink Info:扫描AP地图,找到所有可用AP
* JLink Info: 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代码(BP)槽和0文字槽
* JLink信息:CoreSight组件:
* JLink Info: 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 FPB
ROMTableAddr = 0 xe00ff000
* 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
Hardware-Breakpoints: 4
Software-Breakpoints: 8192
监测点:2
JTAG速度:2000khz
负载“C: \ \ \ \ \ \ DA1458x \ \ 5.0.4 \ \项目target_apps \ \ ble_examples \ \ ble_app_peripheral \ \ Keil_5 \ \ out_580 \ \ ble_app_peripheral_580.axf”
* JLink Info: Reset:通过demcr . vc_coreeset重置后暂停核心。
* JLink Info: Reset:通过AIRCR.SYSRESETREQ重置设备。
包括“C: \ \ \ \ \ \ DA1458x \ \ 5.0.4 \ \项目target_apps \ \ ble_examples \ \ ble_app_peripheral \ \ Keil_5 \\..\\..\\..\\..\\..\\ sdk \ \ common_project_files \ \ misc \ \ sysram_case23.ini”
/**
****************************************************************************************
* DA1458x对象通过调试器接口加载脚本(例如JLink等)。
*这个脚本的目标是加载Keils的目标文件到DA1458x RAM
*确保DA1458x之前已被清理。
****************************************************************************************
*/
// Write to DA1458x SYS_CTRL_REG ->生成SW重置,启用调试器
x50000012 _WWORD (0, 0 x80a4)
^
***错误125,第10行:AGDI:内存写失败(0x50000012)
//之前的命令(SW reset)恢复处理器
// Write to Cortex-M0 DHCSR Core Debug Register ->
xe000edf0 _WDWORD (0, 0 xa05f0003)
^
***错误125,第14行:AGDI:内存写入失败(0xE000EDF0)
//调试器复位前需要的睡眠时间(以msec为单位
_sleep_ (1000)
//调试器重置(检查Keil调试器设置)
//预先选择的重置类型(在Options-> Debug-> Settings中找到)是Normal (0):
// - 正常:通过sysresetreq和Vectreeset位重置核心和外围设备
重置
* JLink Info: Reset:通过demcr . vc_coreeset重置后暂停核心。
* JLink Info: Reset:通过AIRCR.SYSRESETREQ重置设备。
//加载对象文件
负载% L
* JLink Info: Reset:通过demcr . vc_coreeset重置后暂停核心。
* JLink Info: Reset:通过AIRCR.SYSRESETREQ重置设备。
//加载堆栈指针
SP = _RDWORD (0 x20000000)
//加载程序计数器
美元= _RDWORD (0 x20000004)
函数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]. printf("Used size in this HEAP: %4d (current) - %4d (maximum)\n",used_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("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("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()结束
附加信息:我使用"DA1458x\\5.0.4\\项目\\target_apps\\ble_examples\\ble_app_peripheral"示例代码。
嗨ridzuwary,
我认为这个问题和JLink更新没有关系。可能您已经禁用了调试器。你在SDK的ble_app_peripheral示例中做过任何修改吗?你有没有烧SPI flash或你只是试图下载固件到系统ram ?你可以用另一个SDK示例复制这个问题吗?
谢谢,PM_Dialog
你好,
我没有做任何任何修改ble_app_peripheral。
我试图运行程序使用调试。以前我没有问题运行它。
我尝试其他的例子和同样的错误125是在那里。
我没有做任何任何修改ble_app_peripheral。
我试图运行程序使用调试。以前我没有问题运行它。
我尝试其他的例子和同样的错误125是在那里。
我正在使用这个文档:
DA14580蓝牙智能开发工具包-基本UM-B-025
附件是来自keil的,会不会有问题?
嗨ridzuwary,
请查收附件截图。请问你们是否有相同的配置?一旦你有正确的跳线设置,你应该能够编程你的板。
谢谢,PM_Dialog
你好,
我还在看你分享的照片。
唯一的区别是它的DLL版本是v6.46d,而示例是v6.30c。
跳线在每个教程中设置正确。
输出如下:
运行代码大小限制:32K
将JLink项目文件设置为“C: a\DA1458x\5.0.4\projects\target_apps\ble_examples\ble_app_barebone\Keil_5\JLink settings .ini”* JLink Info: Device "CORTEX-M0" selected。
JLink信息:
------------
DLL: V6.46d,编译于2019年6月7日17:33:40
固件:J-Link OB-SAM3U128 V1 compiled Jan 7 2019 14:05:40
硬件:V1.00
S / N: 480063501
* JLink Info: Found SW-DP with ID 0x0BB11477
* JLink Info:扫描AP地图,找到所有可用AP
* JLink Info: 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代码(BP)槽和0文字槽
* JLink信息:CoreSight组件:
* JLink Info: 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 FPB
ROMTableAddr = 0 xe00ff000
* 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
Hardware-Breakpoints: 4
Software-Breakpoints: 8192
监测点:2
JTAG速度:2667khz
包括“C: \ \ \ \ \ \ DA1458x \ \ 5.0.4 \ \项目target_apps \ \ ble_examples \ \ ble_app_barebone \ \ Keil_5 \\..\\..\\..\\..\\..\\ sdk \ \ common_project_files \ \ misc \ \ sysram_case23.ini”
/**
****************************************************************************************
* DA1458x对象通过调试器接口加载脚本(例如JLink等)。
*这个脚本的目标是加载Keils的目标文件到DA1458x RAM
*确保DA1458x之前已被清理。
****************************************************************************************
*/
// Write to DA1458x SYS_CTRL_REG ->生成SW重置,启用调试器
x50000012 _WWORD (0, 0 x80a4)
^
***错误125,第10行:AGDI:内存写失败(0x50000012)
//之前的命令(SW reset)恢复处理器
// Write to Cortex-M0 DHCSR Core Debug Register ->
xe000edf0 _WDWORD (0, 0 xa05f0003)
^
***错误125,第14行:AGDI:内存写入失败(0xE000EDF0)
//调试器复位前需要的睡眠时间(以msec为单位
_sleep_ (1000)
//调试器重置(检查Keil调试器设置)
//预先选择的重置类型(在Options-> Debug-> Settings中找到)是Normal (0):
// - 正常:通过sysresetreq和Vectreeset位重置核心和外围设备
重置
* JLink Info: Reset:通过demcr . vc_coreeset重置后暂停核心。
* JLink Info: Reset:通过AIRCR.SYSRESETREQ重置设备。
//加载对象文件
负载% L
* JLink Info: Reset:通过demcr . vc_coreeset重置后暂停核心。
* JLink Info: Reset:通过AIRCR.SYSRESETREQ重置设备。
//加载堆栈指针
SP = _RDWORD (0 x20000000)
//加载程序计数器
美元= _RDWORD (0 x20000004)
函数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]. printf("Used size in this HEAP: %4d (current) - %4d (maximum)\n",used_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("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("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()结束
嗨ridzuwary,
似乎您正在以睡眠模式运行代码,请尝试启动调试会话并再次单击以停止调试。通过这样做,你应该看到你的设备广告。如果您想调试代码,请禁用休眠特性并运行代码。请移除除JTAG连接的跳线外的所有跳线。如果你把电池放好了,也把它拿下来。你有没有检查运行SDK的其他例子?
谢谢,PM_Dialog
1.我如何启用睡眠/取消睡眠模式/禁用睡眠功能?
2.我一直试图运行调试模式没有成功输出如上所示,
3.我检查了所有其他的例子,blinky工作,因为它不使用参数/内存。其他Ble在运行调试时出现相同的错误。
4.为了调试时不出现任何错误,让我来总结一下:
a.移除除JTAG之外的所有跳线(此支持遵循UART跳线设置)。
b.拆卸电池
c.选择工程文件夹
d .构建
e.调试>启动调试会话
f .单击“运行
5.你能解释为什么会发生这个错误吗?
// Write to DA1458x SYS_CTRL_REG ->生成SW重置,启用调试器
x50000012 _WWORD (0, 0 x80a4)
^
***错误125,第10行:AGDI:内存写失败(0x50000012)
//之前的命令(SW reset)恢复处理器
顺便说一下,在启动调试时,当发出一个运行命令时,它停留在init。
我将附上图片。
顺便说一下,在启动调试时,当发出一个运行命令时,它停留在init。
我将附上图片。
嗨ridzuwary,
截图是正确的!你的设备应该开始做广告了。你用普通的移动BLE应用程序检查过了吗?装置应该在空中。
谢谢,PM_Dialog
不幸的是,我无法检测到这些设备。
它不是广告。
我使用3个不同的ble / beacon扫描仪只是为了确定。
请看之前截图中的命令部分。它期望得到那个输出?
那么,我是否忽略了“***错误125,第10行:AGDI:内存写失败(0x50000012)”错误,仍然存在时,我运行调试?
嗨ridzuwary,
这是非常奇怪的行为!尝试将SDK解压缩在新推断的路径文件夹中,然后重新安装Keil工具和jlink。之后,尝试构建项目。你能否建立正确的?请注意,我无法复制您的问题,所以请尝试这并让我知道。
c: \ myWorkshop \ DA1458x_SDK \ 5.0.4
同时,请尝试禁用代码中设置的所有断点。
谢谢,PM_Dialog
在初始安装并尝试了基本示例后,我也有类似的行为。我通过做一个干净的构建“项目->干净目标”和一个“项目->构建目标”来修复它。然后,在启动调试会话并运行程序之后,它开始为. ...Claus做广告
嗨robech,
非常感谢您的迹象。
问候,PM_Dialog