你好,Dialog团队,
本周我试着用智能片段工具箱v5.0.10.2434和JTAG接口刻录OTP。智能片段工具箱可以“检测”我的芯片,并显示消息“检测到的设备:DA14585 on JTAG加密狗xxxxx”,然后我创建并打开刻录项目,选择OTP IMAGE文件并按下“连接”按钮,日志上出现如下消息,连接操作中止。
[INFO General @20-01-06 19:36:36]发现ID为0x0BB11477的SW-DP
[INFO General @20-01-06 19:36:36]没有AP预选。假设AP[0]为AHB-AP
[INFO General @20-01-06 19:36:36] AP-IDR: 0x04770021, Type: AHB-AP
[INFO General @20-01-06 19:36:36] AHB-AP ROM: 0xE00FF000(基本地址。第一个ROM表)
[INFO General @20-01-06 19:36:36]发现Cortex-M0 r0p0, Little endian。
[INFO General @20-01-06 19:36:36] FPUnit: 4个代码(BP)插槽和0个文字插槽
[INFO General @20-01-06 19:36:36] CoreSight组件:
[INFO General @20-01-06 19:36:36] ROMTbl[0] @ E00FF000
[INFO General @20-01-06 19:36:36] ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 000BB008 SCS
[INFO General @20-01-06 19:36:36] ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 000BB00A DWT
[INFO General @20-01-06 19:36:36] ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB
[INFO General @20-01-06 19:36:36] BTLE设备被选中。
[INFO OTP Image @20-01-06 19:43:29]头记录已从十六进制文件xxxxxxxx.hex中删除。
[INFO OTP Image @20-01-06 19:43:29] Read 62204 bytes from xxxxxxxx.hex。
[ERROR OTP Image @20-01-06 19:43:31]在地址50000012写入值A6失败。
[ERROR OTP镜像@20-01-06 19:43:31]下载固件文件到单板失败。
我的板子之前运行得很好。我移动了之前的芯片和焊接一个新的,并试图燃烧OTP。
我尝试了一些新的芯片,但是错误信息还是一样。无论我如何尝试,我都失败............
你能告诉我为什么出现“在地址50000012写值A6失败”这条消息,我能做什么,非常感谢!
嗨SkyWei5830,
请记住,OTP代表One Time Programmable(一次性可编程),因此您不能多次擦除和重写OTP,但只能将仍然设置为0的位翻转为1。如果你想燃烧OTP,必须燃烧2个区域:
OTP映像区域,在这里放置用户代码并在引导时镜像到系统。
OTP报头区域,其中放置了定义设备操作的标志和特定值(关于OTP报头值的更多信息可以在智能片段用户指南中找到)。
你烧毁OPT头了吗?此外。你用的是定制板还是我们的dk ?另外,如果你试图通过JTAG连接Flash程序员,你能连接吗?你能从Keil下载FW吗?
谢谢,PM_Dialog
嗨PM_Dialog,
谢谢回复,我能理解OTP是什么意思。也许我没说清楚,我用我的冲浪板,不是你的dk。这个板已经被我的前同事烧掉了OTP,运行正常。我这周接了我前同事的工作,我只是想通过烧OTP来验证他给我的hex文件是正确的,让电路板重新正常运行。
我拆除了板上原有的DA14585,焊接了一个新的DA14585,然后尝试连接JTAG来烧OTP。
我应该需要“导入头从文件”之前“连接”,而燃烧OTP头?我应该先刻录OTP图像还是先刻录OTP头?我已经尝试先燃烧OTA图像,并尝试先燃烧OTA头,但日志上出现相同的错误消息。
我拆除了DA14585和焊接一个新的DA14585.......我尝试了一次又一次,但同样的错误消息出现在日志上。
我的电路板没有外部闪存,所以我无法尝试连接flash程序员。昨天我在keil用源代码项目在线调试,板子可以正常运行。
谢谢,
嗨PM_Dialog,
我改变了电路板的电源供应,然后在OTP图像中烧录。当我点击“Cnnect”按钮时,日志上没有错误,但然后我点击“刻录”按钮,有一个错误如下所示,
[INFO OTP Image @20-01-07 11:41:54] ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 000BB008 SCS
[INFO OTP Image @20-01-07 11:41:54] ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 000BB00A DWT
[INFO OTP Image @20-01-07 11:41:54] ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB
[INFO OTP Image @20-01-07 11:41:55] Firmware File C:\Program Files (x86)\ SmartSnippetsToolbox\SmartSnippetsToolbox5.0.10\common_resources\SupportPackages\DA14585-586\toolbox_resources/common/jtag_program .bin已被选择下载。
[INFO OTP Image @20-01-07 11:41:55] Successfully . downloading firmware file to board.日志含义
[WARNING OTP Image @20-01-07 11:42:03] 4 0字节添加在文件末尾的字对齐数据
[ERROR OTP镜像@20-01-07 11:42:03]清除内存地址7FC7C08失败。
[ERROR OTP镜像@20-01-07 11:42:03]清除内存地址7FC7C08失败。
[ERROR OTP图像@20-01-07 11:42:03]读取内存失败。
那么通过JTAG燃烧OTP时功率要求高吗?我烧伤的时候还有什么需要注意的吗?
我觉得我离成功不远了,非常感谢。
嗨SkyWei5830,
如果我能正确理解的话,在你使用的定制板中,OTP是否已经被你的前同事烧毁了?你能在船上试一下OTP没有烧焦吗?此外,我建议通过SmartSnippets工具箱中的UART连接,而不是JTAG。你将能够直接燃烧你的SystemRAM通过JTAG,只要OTP报头字段名为JTAG启用标志保持启用。如果应用程序标志被烧毁,并且JTAG使能标志被禁用,那么设备将变得不可访问。
谢谢,PM_Dialog
谢谢你的回复!
我已经尝试通过UART而不是JTAG连接,在烧录OTP的过程中,当出现“Please press the hardware reset button on the board to start the download process.”的消息时,我按下了单板上的复位按钮,并确认复位引脚已经高了,但DA14585复位没有触发,日志上显示如下错误消息,烧录处理中止。
[INFO OTP Image @20-01-08 09:24:49]头记录已从十六进制文件ev_nb_key3_5.hex中删除。
[INFO OTP Image @20-01-08 09:24:49]从文件ev_nb_key3_5.hex读取62204字节。
[INFO OTP Image @20-01-08 09:24:51] Firmware File C:\Program Files (x86)\ SmartSnippetsToolbox\SmartSnippetsToolbox5.0.10\common_resources\SupportPackages\DA14585-586\toolbox_resources/common/flash_program .bin已被选择下载。
[INFO OTP Image @20-01-08 09:24:51] Connection to COM10 port has successfully open。
[INFO OTP Image @20-01-08 09:24:51] Started download procedure…
[ACTION OTP Image @20-01-08 09:24:52]请按单板上的硬件复位按钮开始下载过程。
[ERROR OTP Image @20-01-08 09:25:07] Timeout:重置信号未检测到超过16000 msecs。
[INFO Booter @20-01-08 09:25:07]成功从COM10端口断开连接。
[ERROR OTP Image @20-01-08 09:25:07]下载固件文件到单板失败。
谢谢。
嗨SkyWei5830,
你能说明OTP和OTP头是否已经从你的前同事那里烧掉了吗?你试过直接通过Keil下载FW吗?或者你试过烧SPI闪光灯吗?如果你用另一个DK尝试,你能复制这个问题吗?
谢谢,PM_Dialog
嗨PM_Dialog,
是的,OTP和OTP头已经被我的前同事烧毁了,我们的定制板以前工作得很好。我只是拆除了之前的DA14585在板上,并焊接一个全新的,然后试图烧毁OTP。不管我怎么努力,我都失败了。到目前为止,我已经尝试了6个da14585, 3种Jlink工具,但我没有成功在最后.........这是我第一次接触基于DA14585的设计,我的前同事没有给我留下任何燃烧说明,所以我只能在你的帮助下探索^^^^^^^^
刚才我焊接了一个全新的DA14585,连接电源和Jlink工具,打开SmartSnippets Toolbox,再次通过JTAG接口开始刻录OTP。我点击了connect,没有报告错误,然后我点击了burn,显示了以下错误消息,我再次失败.....
[INFO General @20-01-10 17:56:21]发现ID为0x0BB11477的SW-DP
[INFO General @20-01-10 17:56:21]没有预选AP。假设AP[0]为AHB-AP
[INFO General @20-01-10 17:56:21] AP-IDR: 0x04770021, Type: AHB-AP
[INFO General @20-01-10 17:56:21] AHB-AP ROM: 0xE00FF000(基本地址。第一个ROM表)
[INFO General @20-01-10 17:56:21]发现Cortex-M0 r0p0, Little endian。
[INFO General @20-01-10 17:56:21] FPUnit: 4个代码(BP)插槽和0个文字插槽
[INFO General @20-01-10 17:56:21] CoreSight组件:
[INFO General @20-01-10 17:56:21] ROMTbl[0] @ E00FF000
[INFO General @20-01-10 17:56:21] ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 000BB008 SCS
[INFO General @20-01-10 17:56:21] ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 000BB00A DWT
[INFO General @20-01-10 17:56:21] ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB
[INFO General @20-01-10 17:56:21]已选择BTLE设备。
[INFO OTP Image @20-01-10 17:56:34]头记录已从十六进制文件xxxx.hex中删除。
[INFO OTP镜像@20-01-10 17:56:34]读取文件ev_nb_key3_5.hex中的62204字节。
[INFO OTP Image @20-01-10 17:56:38]发现ID为0x0BB11477的SW-DP
[INFO OTP Image @20-01-10 17:56:38]使用预先配置的AP[0]作为AHB-AP与核心通信
[INFO OTP Image @20-01-10 17:56:38] AP-IDR: 0x04770021, Type: AHB-AP
[INFO OTP镜像@20-01-10 17:56:38]AHB-AP ROM: 0xE00FF000(基本地址。第一个ROM表)
[INFO OTP图像@20-01-10 17:56:38]发现Cortex-M0 r0p0, Little endian。
[INFO OTP图像@20-01-10 17:56:38]FPUnit: 4个代码(BP)插槽和0个文字插槽
[INFO OTP图片@20-01-10 17:56:38]CoreSight组件:
[INFO OTP图片@20-01-10 17:56:38]ROMTbl[0] @ E00FF000
[INFO OTP Image @20-01-10 17:56:38] ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 000BB008 SCS
[INFO OTP Image @20-01-10 17:56:38] ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 000BB00A DWT
[INFO OTP Image @20-01-10 17:56:38] ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB00B FPB
[INFO OTP Image @20-01-10 17:56:38] Firmware File C:\Program Files (x86)\ SmartSnippetsToolbox\SmartSnippetsToolbox5.0.10\common_resources\SupportPackages\DA14585-586\toolbox_resources/common/jtag_program .bin已被选择下载。
[INFO OTP Image @20-01-10 17:56:39] Successfully . downloading firmware file to board.日志含义
[WARNING OTP Image @20-01-10 17:56:46] 4 0字节在文件末尾添加到字对齐数据
[INFO OTP Image @20-01-10 17:56:46] Read 32768 bytes with offset 00
[INFO OTP镜像@20-01-10 17:56:46]读取29440字节,偏移量为0
[INFO OTP图像@20-01-10 17:56:46]阅读已经完成。读取62208字节。
[INFO OTP图像@20-01-10 17:56:46]正在读取内存内容…
[INFO OTP Image @20-01-10 17:56:49]开始在地址0x7F80000上刻录62208字节的数据。
[INFO OTP Image @20-01-10 17:56:50] Memory burning completed successfully.内存烧录完成。第1(2)块
[ERROR OTP图像@20-01-10 17:56:50]地址7FC7C02写入长度失败。
[ERROR OTP图像@20-01-10 17:56:50]内存刻录失败。
你能告诉我这个警告信息是什么意思吗?此警告信息是否导致编程失败?
[WARNING OTP Image @20-01-10 17:56:46] 4 0字节在文件末尾添加到字对齐数据
我已经下单购买了你们的dk,正在运往中国的途中,大概需要2周时间,也许等我收到dk后可以更好的核实。
这几周太累了,我以为燃烧OTP是一件非常简单的事情,但事实并非如此。我在中国的网络上并没有得到太多关于DA14585的信息,大部分都是关于DA14580的,并且几乎没有关于如何通过JTAG接口刻录OTP的信息。
我也从您那里学到了新的知识,谢谢您的帮助和指导。
嗨SkyWei5830,
这意味着您不能刻录OTP。你能导出OTP报头并分享给我吗?你可以在SmartSnippets工具箱中导出它。请在没有烧坏OTP的新设备中尝试。你试着用Keil下载FW了吗?
谢谢,PM_Dialog
嗨PM_Dialog,
您可以阅读附件上的OTP报头。我买的设备已经试用过了。我会买新的,再试一次。我的板上没有外部闪存,我可以直接通过keil下载固件吗?我认为keil只能用于在线调试,并让代码在ram中运行。我已经尝试了在线调试,代码在ram中正常运行。
在代码调试完成,产品设计完成后进行OTP刻录。这项工作通常是由不太专业的人员来完成的,所以我想,我能有一个更简单易懂的操作指南吗?
谢谢,SkyWei5830
嗨SkyWei5830,
我建议你在一个没有烧毁OTP / OTP头的板上尝试一下。通常,客户在最终产品中使用OTP,而不是用于调试/教育范围。可以,您可以直接通过Keil下载FW到System-RAM。按两次“启动/停止调试会话”按钮,FW将被下载到System-RAM中。
如果您正在开始一个新的设计,我们强烈建议您使用DA14531和SDK6.0.12,因为它们有了更大的改进。我们有很多代码示例和改进的文档,还有软件路线图支持。请检查DA14531支持门户:
//www.xmece.com/亚博电竞菠菜products/connectivity/bluetooth-low-energy/products/da14531
谢谢,PM_Dialog
嗨PM_Dialog,
谢谢你!谢谢你的建议!
嗨SkyWei5830,
谢谢你接受我的回答。如果你有任何后续问题,请创建一个新的论坛线程。
谢谢,PM_Dialog