你好,
我仍然与编程固件与keil和da14580DEVKT-bsdk板新。
以前编译和调试时,运行示例代码没有问题。
However after my Jlink firware upgrades , somehow when i debug, this error crop up :
* * *错误125,10号线:AGDI:内存写失败了(0x50000012)
下面是在Keil中运行debug的输出。
以代码大小限制运行:32K
将JLink项目文件设置为“C:\a\DA1458x\5.0.4\projects\target\u apps\ble\u examples\ble\u app\u peripheral\Keil\u 5\JLinkSettings.ini”*JLink Info:Device“CORTEX-M0”selected。
链接信息:
------------
DLL:V6.46d,编译时间:2019年6月7日17:33:40
固件:J-Link OB-SAM3U128 V1编译时间:2019年1月7日14:05:40
Hardware: V1.00
序列号:480063501
*JLink信息:找到ID为0x0BB11477的SW-DP
*JLink信息:扫描AP地图以查找所有可用AP
*JLink Info:AP[1]:已停止AP扫描,因为已到达AP map的末尾
*JLink信息:AP[0]:AHB-AP(IDR:0x04770021)
*JLink Info: Iterating through AP map to find AHB-AP to use
*JLink信息:AP[0]:找到核心
*JLink信息:AP[0]:AHB-AP ROM基:0xE00FF000
*JLink信息:CPUID寄存器:0x410CC200。实现者代码:0x41(ARM)
*JLink Info: Found Cortex-M0 r0p0, Little endian.
*JLink Info: FPUnit: 4 code (BP) slots and 0 literal slots
*JLink信息:CoreSight组件:
*链接信息:ROMTbl[0]@E00FF000
*链接信息:ROMTbl[0][0]:E000E000,CID:B105E00D,PID:000BB008 SCS
*链接信息:ROMTbl[0][1]:E0001000,CID:B105E00D,PID:000BB00A DWT
*JLink Info: ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB
ROMTableAddr=0xE00FF000
*JLink Info:Reset:通过DEMCR.VC\u CORERESET重置后停止核心。
*JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
目标信息:
------------
设备:ARMCM0
VTarget = 3.300V
引脚状态:TCK:0、TDI:1、TDO:1、TMS:1、TRES:1、TRST:1
硬件断点:4
软件断点:8192
观察点:2
JTAG speed: 2000 kHz
加载“C:\\a\\DA1458x\\5.0.4\\projects\\target\u apps\\ble\u examples\\ble\u app\u peripheral\\Keil\u 5\\out\u 580\\ble\u app\u peripheral\u 580.axf”
*JLink Info:Reset:通过DEMCR.VC\u CORERESET重置后停止核心。
*JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
Include "C:\\a\\DA1458x\\5.0.4\\projects\\target_apps\\ble_examples\\ble_app_peripheral\\Keil_5\\..\\..\\..\\..\\..\\sdk\\common_project_files\\misc\\sysram_case23.ini"
/**
****************************************************************************************
*通过调试器接口(如JLink等)加载DA1458x对象脚本。
*The goal of this script is to load the Keils's object file to the DA1458x RAM
*确保DA1458x先前已清理。
****************************************************************************************
*/
// Write to DA1458x SYS_CTRL_REG -> Generate SW reset, enable debugger
_WWORD(0x50000012、0x80a4)
^
* * *错误125,10号线:AGDI:内存写失败了(0x50000012)
//上一个命令(SW reset)解除处理器的锁定
//写入Cortex-M0 DHCSR核心调试寄存器->停止Cortex-M0
_字(0xe000edf0,0xa05f0003)
^
***错误125,第14行:AGDI:内存写入失败(0xE000EDF0)
//执行调试器重置之前所需的睡眠时间(毫秒)
_睡眠(1000)
//调试器重置(检查Keil调试器设置)
//预选的重置类型(在“选项”->“调试”->“设置”中找到)为“正常”(0):
// - 正常:通过sysresetreq和Vectreeset位重置核心和外围设备
RESET
*JLink Info:Reset:通过DEMCR.VC\u CORERESET重置后停止核心。
*JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
// Load object file
加载%L
*JLink Info:Reset:通过DEMCR.VC\u CORERESET重置后停止核心。
*JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
// Load stack pointer
SP = _RDWORD(0x20000000)
//加载程序计数器
$ = _RDWORD(0x20000004)
FUNC void disp\u memlog(无效)
{
内部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].used_sz, mem_log[0].max_used_sz);
printf(“在其他堆中使用的大小:%4d(当前)-%4d(最大)\n\n”,mem\u log[0]。Used\u other\u sz,mem\u log[0]。max\u Used\u other\u 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(“>>>消息堆<<\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(“>>>非Ret堆<<\n”);
printf(“此堆中使用的大小:%4d(当前)-%4d(最大)\n”,mem\u log[3]。Used\u sz,mem\u log[3]。max\u Used\u 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\u memlog()结束
附加信息:我正在使用"DA1458x\\5.0.4\\projects\\target_apps\\ble_examples\\ble_app_peripheral" sample code.
嗨,里奇·沃里,
我认为这个问题与JLink更新无关。可能您禁用了调试器。你对SDK的ble\u app\u外围示例做过任何修改吗?你烧了SPI闪存还是只是想把固件下载到系统RAM里?你能用另一个SDK的例子来复制这个问题吗?
谢谢,下午好
Hi,
我什么都没做modification to ble_app_peripheral .
Im trying to run the program using debug . Previously i have no problem running it.
我在尝试另一个不可靠的例子,同样的错误是存在的。
我什么都没做modification to ble_app_peripheral .
Im trying to run the program using debug . Previously i have no problem running it.
我在尝试另一个不可靠的例子,同样的错误是存在的。
我正在使用此文档:
DA14580型蓝牙® Smart Development Kit – Basic UM-B-025
附件是keil寄来的,有问题吗?
嗨,里奇·沃里,
Please check the attached snapshots. Can you please indicate if you have the same configurations? As soon as you have the correct jumper set up, you should be able to program your board.
谢谢,下午好
Hi,
我仍然按照你分享的照片。
唯一的区别是,它的DLL版本是v6.46d,而您的示例是v6.30c。
The jumper is set correctlya s per tutorial.
The output is as follows :
以代码大小限制运行:32K
Set JLink Project File to "C:\a\DA1458x\5.0.4\projects\target_apps\ble_examples\ble_app_barebone\Keil_5\JLinkSettings.ini"* JLink Info: Device "CORTEX-M0" selected.
链接信息:
------------
DLL:V6.46d,编译时间:2019年6月7日17:33:40
固件:J-Link OB-SAM3U128 V1编译时间:2019年1月7日14:05:40
Hardware: V1.00
序列号:480063501
*JLink信息:找到ID为0x0BB11477的SW-DP
*JLink信息:扫描AP地图以查找所有可用AP
*JLink Info:AP[1]:已停止AP扫描,因为已到达AP map的末尾
*JLink信息:AP[0]:AHB-AP(IDR:0x04770021)
*JLink Info: Iterating through AP map to find AHB-AP to use
*JLink信息:AP[0]:找到核心
*JLink信息:AP[0]:AHB-AP ROM基:0xE00FF000
*JLink信息:CPUID寄存器:0x410CC200。实现者代码:0x41(ARM)
*JLink Info: Found Cortex-M0 r0p0, Little endian.
*JLink Info: FPUnit: 4 code (BP) slots and 0 literal slots
*JLink信息:CoreSight组件:
*链接信息:ROMTbl[0]@E00FF000
*链接信息:ROMTbl[0][0]:E000E000,CID:B105E00D,PID:000BB008 SCS
*链接信息:ROMTbl[0][1]:E0001000,CID:B105E00D,PID:000BB00A DWT
*JLink Info: ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB
ROMTableAddr=0xE00FF000
*JLink Info:Reset:通过DEMCR.VC\u CORERESET重置后停止核心。
*JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
目标信息:
------------
设备:ARMCM0
VTarget = 3.300V
引脚状态:TCK:0、TDI:1、TDO:1、TMS:1、TRES:1、TRST:1
硬件断点:4
软件断点:8192
观察点:2
JTAG speed: 2667 kHz
Include "C:\\a\\DA1458x\\5.0.4\\projects\\target_apps\\ble_examples\\ble_app_barebone\\Keil_5\\..\\..\\..\\..\\..\\sdk\\common_project_files\\misc\\sysram_case23.ini"
/**
****************************************************************************************
*通过调试器接口(如JLink等)加载DA1458x对象脚本。
*The goal of this script is to load the Keils's object file to the DA1458x RAM
*确保DA1458x先前已清理。
****************************************************************************************
*/
// Write to DA1458x SYS_CTRL_REG -> Generate SW reset, enable debugger
_WWORD(0x50000012、0x80a4)
^
* * *错误125,10号线:AGDI:内存写失败了(0x50000012)
//上一个命令(SW reset)解除处理器的锁定
//写入Cortex-M0 DHCSR核心调试寄存器->停止Cortex-M0
_字(0xe000edf0,0xa05f0003)
^
***错误125,第14行:AGDI:内存写入失败(0xE000EDF0)
//执行调试器重置之前所需的睡眠时间(毫秒)
_睡眠(1000)
//调试器重置(检查Keil调试器设置)
//预选的重置类型(在“选项”->“调试”->“设置”中找到)为“正常”(0):
// - 正常:通过sysresetreq和Vectreeset位重置核心和外围设备
RESET
*JLink Info:Reset:通过DEMCR.VC\u CORERESET重置后停止核心。
*JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
// Load object file
加载%L
*JLink Info:Reset:通过DEMCR.VC\u CORERESET重置后停止核心。
*JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
// Load stack pointer
SP = _RDWORD(0x20000000)
//加载程序计数器
$ = _RDWORD(0x20000004)
FUNC void disp\u memlog(无效)
{
内部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].used_sz, mem_log[0].max_used_sz);
printf(“在其他堆中使用的大小:%4d(当前)-%4d(最大)\n\n”,mem\u log[0]。Used\u other\u sz,mem\u log[0]。max\u Used\u other\u 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(“>>>消息堆<<\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(“>>>非Ret堆<<\n”);
printf(“此堆中使用的大小:%4d(当前)-%4d(最大)\n”,mem\u log[3]。Used\u sz,mem\u log[3]。max\u Used\u 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\u memlog()结束
嗨,里奇·沃里,
Seems that you are running the code in sleep mode, try to start the debugging session and click again in order to stop debugging. By doing that you should see your device advertising. if you want to debug the code, disable the sleeping feature and run the code. Please remove all the jumper except the jumpers for JTAG connection. Also remove the battery if you had it placed. Did you check to run any other example of the SDK?
谢谢,下午好
1.如何启用睡眠/取消睡眠模式/禁用睡眠功能?
2. I have been trying to run debug mode wthout success with the output as above,
3. I have check all other examples , blinky is working as it doesnt use parameters/memory. Other Ble have the same error when run debug.
4.让我重述一下,为了调试时不出现任何错误,我应该:
答。移除除JTAG之外的所有跳线(此支持遵循UART跳线设置)。
b。取出电池
c。选择项目文件夹
d。建造
e. Debug > start debug session
f. click run
5.你能解释一下为什么会发生这种错误吗?
// Write to DA1458x SYS_CTRL_REG -> Generate SW reset, enable debugger
_WWORD(0x50000012、0x80a4)
^
* * *错误125,10号线:AGDI:内存写失败了(0x50000012)
//上一个命令(SW reset)解除处理器的锁定
By the way , in start debug, when issue a run command , it stuck at init.
Im attaching the picture.
By the way , in start debug, when issue a run command , it stuck at init.
Im attaching the picture.
嗨,里奇·沃里,
The screenshot is correct! Your device should start advertising. Did you check it with a generic mobile BLE application? The device should be in the air.
谢谢,下午好
不幸的是,我检测不到这些设备。
它不是广告。
我使用3个不同的ble/信标扫描仪只是为了确定。
请看之前截图的命令部分。预计会有这样的产出?
So do i igonore the "*** error 125, line 10: AGDI: memory write failed (0x50000012)" error that still exist when i run debug ?
嗨,里奇·沃里,
这是非常奇怪的行为!尝试将SDK解压缩在新推断的路径文件夹中,然后重新安装Keil工具和jlink。之后,尝试构建项目。你能否建立正确的?请注意,我无法复制您的问题,所以请尝试这并让我知道。
c:\myWorkshop\DA1458x\u SDK\5.0.4版本
另外,请尝试禁用您在代码中设置的所有断点。
谢谢,下午好
之后我也有类似的行为the initial install and trying out the barebone example. I fixed it by doing a clean build "Project->Clean targets" followed by a "Project->Build Target". Then after starting a debug session and running the program it started advertizing. ...Claus
Hi robech,
非常感谢您的迹象。
Regards, PM_Dialog