error 125, AGDI:内存写失败

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
16个职位/ 0个新职位
最后发表
ridzuwary
离线
最后看到:1年8个月前
加入:2017-11-24 03:10
error 125, AGDI:内存写失败

你好,

我仍然新与keil和da14580DEVKT-B sdk板编程固件。

在以前编译和调试时,运行示例代码没有问题。

然而,在我的Jlink固件升级后,不知怎么的,当我调试时,这个错误弹出:

*** error 125, line 10: AGDI: memory write failed (0x50000012)

下面是在Keil中运行调试的输出。

运行代码大小限制:32K
将JLink项目文件设置为“C: a\DA1458x\5.0.4\projects\target_apps\ble_examples\ble_app_peripheral\Keil_5\JLinkSettings.ini”* JLink Info: Device“CORTEX-M0”selected。

JLink信息:
------------
DLL: V6.46d,编译2019年6月7日17:33:40
固件:J-Link obs - sam3u128 V1编译1月7日2019 14:05:40
硬件:V1.00
S / N: 480063501

* 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速度:2000千赫

负载“C: \ \ \ \ \ \ DA1458x \ \ 5.0.4 \ \项目target_apps \ \ ble_examples \ \ ble_app_peripheral \ \ Keil_5 \ \ out_580 \ \ ble_app_peripheral_580.axf”
* JLink信息:Reset:通过demcr . vc_coreset重置后停止核心。
* JLink信息: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之前已被清理干净。
****************************************************************************************
*/

//写入DA1458x SYS_CTRL_REG ->生成SW复位,启用调试器
x50000012 _WWORD (0, 0 x80a4)

*** error 125, line 10: AGDI: memory write failed (0x50000012)

//前一个命令(SW reset)解除处理器
//写入到Cortex-M0 DHCSR核心调试寄存器-> Halt Cortex-M0
xe000edf0 _WDWORD (0, 0 xa05f0003)

*** error 125, line 14: AGDI: memory write failed (0xE000EDF0)

//调试器重置之前所需的睡眠时间(以毫秒为单位)
_sleep_ (1000)

//调试器重置(检查Keil调试器设置)
//预选的重置类型(在Options-> Debug-> Settings中找到)是Normal (0):
// - Normal:通过SYSRESETREQ和VECTRESET位重置核心和外围设备
重置
* JLink信息:Reset:通过demcr . vc_coreset重置后停止核心。
* JLink信息:Reset:通过AIRCR.SYSRESETREQ重置设备。

//加载对象文件
负载% L
* JLink信息:Reset:通过demcr . vc_coreset重置后停止核心。
* JLink信息: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]。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()结束

设备:
ridzuwary
离线
最后看到:1年8个月前
加入:2017-11-24 03:10
附加信息:我正在使用

额外信息:我使用“DA1458x\\5.0.4\\项目\\target_apps\\ble_examples\\ble_app_peripheral”示例代码。

PM_Dialog
离线
最后看到:2天17小时前
工作人员
加入:2018-02-08 11:03
嗨ridzuwary,

嗨ridzuwary,

我认为这个问题与JLink更新无关。您可能已经禁用了调试器。你在SDK的ble_app_peripheral示例中做了任何修改吗?你是把SPI flash烧坏了还是你只是想把固件下载到系统内存中?您可以用另一个SDK示例复制这个问题吗?

谢谢,PM_Dialog

ridzuwary
离线
最后看到:1年8个月前
加入:2017-11-24 03:10
你好,

你好,

我没有对ble_app_peripheral做任何修改。

我试图使用调试运行程序。以前我运行它没有问题。

我尝试其他ble例子和相同的错误125在那里。

ridzuwary
离线
最后看到:1年8个月前
加入:2017-11-24 03:10
我什么也没做

我没有对ble_app_peripheral做任何修改。

我试图使用调试运行程序。以前我运行它没有问题。

我尝试其他ble例子和相同的错误125在那里。

我使用这个文档:

DA14580蓝牙®智能开发工具包-基本UM-B-025

附件是来自keil的,会有问题吗?

附件:
PM_Dialog
离线
最后看到:2天17小时前
工作人员
加入:2018-02-08 11:03
嗨ridzuwary,

嗨ridzuwary,

请查看附件快照。请说明是否有相同的配置?一旦你有正确的跳投设置,你应该能够编程你的板。

谢谢,PM_Dialog

附件:
ridzuwary
离线
最后看到:1年8个月前
加入:2017-11-24 03:10
你好,

你好,

我还在关注你分享的照片。

唯一的区别是,它的DLL版本是v6.46d,而您的示例是v6.30c。

跳线的设置是正确的每个教程。

输出如下:

运行代码大小限制:32K
将JLink项目文件设置为“C: a\DA1458x\5.0.4\projects\target_apps\ble_examples\ble_app_barebone\Keil_5\JLinkSettings.ini”* JLink Info: Device“cortexm0”selected。

JLink信息:
------------
DLL: V6.46d,编译2019年6月7日17:33:40
固件:J-Link obs - sam3u128 V1编译1月7日2019 14:05:40
硬件:V1.00
S / N: 480063501

* 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速度:2667千赫

包括“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之前已被清理干净。
****************************************************************************************
*/

//写入DA1458x SYS_CTRL_REG ->生成SW复位,启用调试器
x50000012 _WWORD (0, 0 x80a4)

*** error 125, line 10: AGDI: memory write failed (0x50000012)

//前一个命令(SW reset)解除处理器
//写入到Cortex-M0 DHCSR核心调试寄存器-> Halt Cortex-M0
xe000edf0 _WDWORD (0, 0 xa05f0003)

*** error 125, line 14: AGDI: memory write failed (0xE000EDF0)

//调试器重置之前所需的睡眠时间(以毫秒为单位)
_sleep_ (1000)

//调试器重置(检查Keil调试器设置)
//预选的重置类型(在Options-> Debug-> Settings中找到)是Normal (0):
// - Normal:通过SYSRESETREQ和VECTRESET位重置核心和外围设备
重置
* JLink信息:Reset:通过demcr . vc_coreset重置后停止核心。
* JLink信息:Reset:通过AIRCR.SYSRESETREQ重置设备。

//加载对象文件
负载% L
* JLink信息:Reset:通过demcr . vc_coreset重置后停止核心。
* JLink信息: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]。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()结束

PM_Dialog
离线
最后看到:2天17小时前
工作人员
加入:2018-02-08 11:03
嗨ridzuwary,

嗨ridzuwary,

似乎您正在以睡眠模式运行代码,请尝试启动调试会话并再次单击以停止调试。通过这样做,你应该看到你的设备广告。如果要调试代码,请禁用休眠特性并运行代码。除用于JTAG连接的跳线外,请拆除所有跳线。如果你装了电池,也要把它取下来。你检查过运行SDK的其他例子吗?

谢谢,PM_Dialog

ridzuwary
离线
最后看到:1年8个月前
加入:2017-11-24 03:10
1.我如何使睡眠

1.我如何启用睡眠/睡眠模式/禁用睡眠功能?

2.我一直在尝试运行调试模式,但没有成功的输出如上所述,

3.我检查了所有其他的例子,blinky是工作的,因为它不使用参数/内存。其他Ble在运行调试时有相同的错误。

4.让我重述一下,以便调试没有任何错误:

a.移除除JTAG以外的所有跳线(支持跟随UART跳线设置)。

b.拆卸电池

c.选择工程文件夹

d .构建

e.调试> start Debug session

f .单击“运行

5.你能解释一下为什么会发生这个错误吗?

//写入DA1458x SYS_CTRL_REG ->生成SW复位,启用调试器
x50000012 _WWORD (0, 0 x80a4)

*** error 125, line 10: AGDI: memory write failed (0x50000012)

//前一个命令(SW reset)解除处理器

ridzuwary
离线
最后看到:1年8个月前
加入:2017-11-24 03:10
顺便说一下,在开始调试中,

顺便说一下,在start debug中,当发出一个run命令时,它会停留在init。

我附上图片。

ridzuwary
离线
最后看到:1年8个月前
加入:2017-11-24 03:10
顺便说一下,在开始调试中,

顺便说一下,在start debug中,当发出一个run命令时,它会停留在init。

我附上图片。

PM_Dialog
离线
最后看到:2天17小时前
工作人员
加入:2018-02-08 11:03
嗨ridzuwary,

嗨ridzuwary,

截图是正确的!你的设备应该开始做广告了。你是否检查了一个通用的移动BLE应用程序?装置应该已经在空中了。

谢谢,PM_Dialog

ridzuwary
离线
最后看到:1年8个月前
加入:2017-11-24 03:10
不幸的是,我无法察觉

不幸的是,我无法检测到这些设备。

这不是广告。

我使用3个不同的ble / beacon扫描仪只是为了确定。

请看前面截图中的命令部分。它期望得到那样的输出?

所以我忽略了“***错误125,行10:AGDI:内存写失败(0x50000012)”错误仍然存在,当我运行调试?

PM_Dialog
离线
最后看到:2天17小时前
工作人员
加入:2018-02-08 11:03
嗨ridzuwary,

嗨ridzuwary,

这是非常奇怪的行为!尝试将SDK解压到一个新的导出路径文件夹中,然后重新安装Keil工具和JLink。在那之后,尝试建立项目。你能正确地构建它们吗?请注意,我不能复制你的问题,所以请尝试这个,让我知道。

c: \ myWorkshop \ DA1458x_SDK \ 5.0.4

另外,请尝试禁用代码中设置的所有断点。

谢谢,PM_Dialog

rorbech
离线
最后看到:1年5个月前
加入:2019-08-09章22节
之后我也有类似的行为

在初始安装和尝试基本示例后,我也有类似的行为。我通过做一个干净的构建“项目->清洁目标”,然后是一个“项目->构建目标”来修复它。然后,在启动调试会话并运行程序后,它开始为. ...Claus做广告

PM_Dialog
离线
最后看到:2天17小时前
工作人员
加入:2018-02-08 11:03
嗨robech,

嗨robech,

非常感谢您的指示。

问候,PM_Dialog