亲爱的对话支持,
我有一个带有Murara Zy模块(DA14580)的定制板,附加了SPI Flash Winbond W25x20。
我直接编程DA14580,或通过Smart Scippets V4.8.3.1804通过UART进行闪存。我使用物联网套件程序员[编辑:CIB]。
两块板在J4处通过15厘米的扁带电缆连接。
当连接通过UART,我可以连接,读取,擦除,烧伤成功,固件将加载在启动和我可以与设备工作。
当通过JTAG (SWD)连接时,连接似乎建立成功:
[INFO General @18-08-12 21:01:50]无法测量总红外len。TDO是恒定的。
[INFO General @18-08-12 21:01:50]无法测量总红外len。TDO是恒定的。
[INFO General @18-08-12 21:01:50]找到ID为0x0BB11477的SWD-DP
[信息概述@ 18-08-12 21:01:50] FpUnit:4代码(BP)插槽和0个文字插槽
[INFO General @18-08-12 21:01:50]找到了Cortex-M0 r0p0, Little endian。
[信息概述@ 18-08-12 21:01:50]精选的BTLE设备。
加载SPI Flash固件也可以工作:
[信息SPI Flash @ 18-08-12 21:04:25]找到了带ID 0x0BB11477的SWD-DP
[信息SPI Flash @ 18-08-12 21:04:25] FpUnit:4代码(BP)插槽和0个字幕插槽
[信息SPI Flash @ 18-08-12 21:04:25]找到了Cortex-M0 R0P0,Little Endian。
[INFO SPI Flash @18-08-12 21:04:25]固件文件C:\Program Files (x86)\Dialog\ SmartSnippetsStudio\Toolbox\common_resources\jtag_program .bin已被选择下载。
[INFO SPI Flash @18-08-12 21:04:25]成功下载固件到单板。
[INFO SPI Flash @18-08-12 21:04:25]配置成功的SPI Flash端口和引脚。
阅读不起作用(闪光/擦除也不是)
[INFO SPI Flash @18-08-14 22:22:06]开始从内存中读取32768字节。
[ERROR SPI Flash @18-08-14 22:22:06]读取地址81FE8内存失败。
[错误SPI Flash @ 18-08-14 22:22:06]读取内存失败。
两种情况下的配置是相同的(SPI Flash引脚配置,SPI Flash选项,SPI Flash内存大小(十六进制,字节),见附加的pdf。
你知道会出什么问题吗?
此致
约翰内斯
嗨gme_johannes,
我无法理解你想做什么。您是否希望通过JTAG和使用SmartSnippets工具编程您的自定义板或Murata模块?你是什么意思是“物联网套装编程器板”?你的意思是通信接口板(CIB)?请提供更具体的信息ABAUT连接图以便为您提供合适的答案。
谢谢,PM_DIALOG.
是的,我已经获得了CIB附带的物联网传感器开发工具包。
使用这个CIB,我尝试用Murata ZY和附加Winbond W25X20编写自定义板。
与UART它工作->内存可以编程,和村田ZY将加载固件从闪存。
使用SWD,它不起作用。
让我混淆的是SWD似乎工作了,它确实建立了与模块的连接,但编程闪存失败。
在上面看到的日志。
您需要哪些其他信息?
flash_programmer.bin(用于UART)是否有可能支持W25x20,而JTAG_Programmer.bin不存在?
我应该修改和重建这个固件吗?
编辑:我调查了DA1458x_SDK\5.0.4\utilities\flash_programmer,对我(作为一个外行人)来说,它看起来像W25X20支持不区分UART/JTAG。
此外,gpio似乎被拉上了,这很好,因为我有其他传感器共享SPI总线(无论如何,它与UART工作良好,所以我没有预期这将是罪魁祸首)。
此外,我也看到了与此线程的可能性:
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。
您是否有可用的文件,这些文件在那里提到?它可以有所帮助吗?
PS:我意识到我应该在“工具”论坛中发布了这一点?也许你可以移动它。
我现在已经注意到,只要W25X20为空的,就会注意到读取和编程闪存的闪存工作正常。
1.Flash被编程,设备从Flash启动,工作正常
2.使用SWD ->打开SS工具箱的行为如最初的文章所述
3.使用UART打开SS Toolbox - >删除Flash
4.Open SS Toolbox with SWD -> can read flash successfully (all empty = FF)[参见下面第一个日志]
5.尝试写入flash ->成功,但立即(自动)readback失败[参见下面的第二个日志]
6.确认flash编程成功,因为设备再次从flash启动,工作正常
首先是日志
[信息概述@ 18-08-19 11:01:22]无法衡量总IR LEN。TDO是恒定的。
[信息概述@ 18-08-19 11:01:22]无法衡量总IR LEN。TDO是恒定的。
[信息概述@ 18-08-19 11:01:22]找到了带ID 0x0BB11477的SWD-DP
[信息概述@ 18-08-19 11:01:22] FpUnit:4代码(BP)插槽和0个字幕插槽
[INFO General @18-08-19 11:01:22]找到了Cortex-M0 r0p0, Little endian。
[INFO General @18-08-19 11:01:22] BTLE设备已选择。
[信息SPI Flash @ 18-08-19 11:03:16]标题记录已从十六进制文件WRBL_SFL_580.HEX中删除。
[INFO SPI Flash @18-08-19 11:03:16]从文件wrbl_sfl_580.hex读取30776字节。
[信息SPI Flash @ 18-08-19 11:03:18]找到了带ID 0x0BB11477的SWD-DP
[INFO SPI Flash @18-08-19 11:03:18] FPUnit: 4 code (BP)插槽和0字面值插槽
[INFO SPI Flash @18-08-19 11:03:18] Found Cortex-M0 r0p0, Little endian。
[信息SPI Flash @ 18-08-19 11:03:19]固件文件c:\ program files(x86)\ dialtoget \ smartsnippetsstudio \ toolbox \ common_resources \ jtag_progrogmer.bin已被选中以下载。
[信息SPI Flash @ 18-08-19 11:03:19]成功下载了固件文件到电路板。
[INFO SPI Flash @18-08-19 11:03:19]配置成功的SPI Flash端口和引脚。
[INFO SPI Flash @18-08-19 11:03:33]开始从内存中读取32768字节。
[INFO SPI Flash @18-08-19 11:03:34]读取结束。读取32768字节。
第二个日志
[信息SPI Flash @ 18-08-19 11:05:01]在地址0x00000时,使用31096字节的数据刻录内存。
[信息SPI Flash @ 18-08-19 11:05:01]内存刻录成功完成。
[INFO SPI Flash @18-08-19 11:05:01]读取内存刷新内存内容....
[ERROR SPI Flash @18-08-19 11:05:01]读取地址81FE8的内存失败。
[错误SPI Flash @ 18-08-19 11:05:01]阅读内存失败。
嗨gme_johannes,
如果您要连接的情况和读取SPI Flash,而在为空的情况下,最可能的原因是因为您的固件禁用调试器。那么,可以请检查您的固件是否禁用调试器?此外,当闪光灯不空时,可以按下重置按钮,然后尝试连接并读取SPI闪存?
谢谢,PM_DIALOG.
嗨PM_Dialog,
如日志所示
[INFO SPI Flash @18-08-12 21:04:25]固件文件C:\Program Files (x86)\Dialog\ SmartSnippetsStudio\Toolbox\common_resources\jtag_program .bin已被选择下载。
[INFO SPI Flash @18-08-12 21:04:25]成功下载固件到单板。
[INFO SPI Flash @18-08-12 21:04:25]配置成功的SPI Flash端口和引脚。
jtag_programmer.bin固件已成功加载到设备。因此,此时,我的固件不再运行......(我也可以通过LED的行为来讲述)。
是否可以在加载JTAG_Programmer.bin(???)中的过程中没有完全重置设备,并且DA14580中的一些寄存器仍然被编程,因为它们是我的固件(例如禁用的调试器)?
此外,在我成功编程一次之后,读取flash怎么会立即失败呢?
毕竟,新的固件不会立即从闪存加载,因为设备没有重置。
嗨gme_johannes,
在加载jtag_programmer.bin的过程中,设备不可能没有被完全重置。你是否检查了你的固件是否禁用了调试器?我试图重现你的问题,但我能够成功连接/读取SPI flash,而不是空的。
谢谢,PM_DIALOG.
嗨PM_Dialog,
我不明白你的论点,因为你说自己:一旦jtag_programmer.bin成功加载(根据需要进行日志记录),设备完全重置,所以没有剩余我的固件应该出现在设备中,它不应该不管我的固件。
然而让我回答你的问题:
固件不会禁用调试器,尽管我确实为连接到相关端口的两个led实现了这个选项。
我已经确定没有禁用调试器,也没有使用相关的GPIO端口。我已经证实了这一点,因为我可以很容易地分辨出led是否在工作。
# ifdef USE_JTAG_AS_GPIO
SetBits16 (SYS_CTRL_REG DEBUGGER_ENABLE 0);
其他#
setbits16(sys_ctrl_reg,debugger_enable,1);
# endif
# ifdef USE_JTAG_AS_GPIO
#define ledg_port gpio_port_1
#定义LEDG_PIN GPIO_PIN_5
#define LEDB_PORT GPIO_PORT_1.
#define ledb_pin gpio_pin_4.
# endif
仍然我在编程时仍然无法读取闪光灯。
嗨gme_johannes,
请尝试通过JTAG进行编程SPI闪存,当程序完成时按下CIB的重置按钮,然后尝试连接并读取SPI闪光灯。你能不能让我知道吗?正如我可以从你的上一篇文章看,你的调试器不禁用,但实际上是一个自定义板,我无法复制你的问题。
谢谢,PM_DIALOG.