亲爱的对话框支持,
我有一个定制板Murara ZY模块(DA14580),附件是一个SPI flash Winbond W25X20。
我直接编程DA14580,或通过智能片段v4.8.3.1804通过UART闪存。我使用物联网套件程序员板[编辑:CIB]。
两个板都通过J4的15cm平板电缆连接。
通过UART连接时,我可以连接,读取,擦除,刻录成功,固件将在启动时加载,我可以使用设备。
通过JTAG(SWD)连接时,连接似乎已成功建立:
[信息概述@ 18-08-12 21:01:50]无法衡量总IR LEN。TDO恒定高。
[信息概述@ 18-08-12 21:01:50]无法衡量总IR LEN。TDO恒定高。
[信息概述@ 18-08-12 21:01:50]找到了带有ID 0x0BB11477的SWD-DP
[INFO General @18-08-12 21:01:50] FPUnit: 4 code (BP)插槽和0字面值插槽
[信息概述@ 18-08-12 21:01:50]找到了Cortex-M0 R0P0,Little Endian。
[INFO General @18-08-12 21:01:50] BTLE设备已选择。
加载SPI Flash固件也需要工作:
[INFO SPI Flash @18-08-12 21:04:25]发现SWD-DP with ID 0x0BB11477
[INFO SPI Flash @18-08-12 21:04:25] FPUnit: 4 code (BP)插槽和0 literal插槽
[INFO SPI Flash @18-08-12 21:04:25] Found Cortex-M0 r0p0, Little endian。
[信息SPI Flash @ 18-08-12 21:04:25]固件文件C:\ Program Files(x86)\ dialog \ smartsnippetsstudio \ toolbox \ common_resources \ jtag_progrogmer.bin已被选中以下载。
[信息SPI Flash @ 18-08-12 21:04:25]成功下载了固件文件到电路板。
[信息SPI Flash @ 18-08-12 21:04:25]成功配置了SPI闪存端口和引脚。
读取不工作(flash/erase也不工作)
[信息SPI Flash @ 18-08-14 22:22:06]开始从内存中读取32768个字节。
[错误SPI Flash @ 18-08-14 22:22:06]地址81FE8的读取内存失败。
[ERROR SPI Flash @18-08-14 22:22:06]读取内存失败。
这两种情况都是相同的(SPI Flash引脚配置,SPI闪存选项,SPI闪存大小(HEX,以字节为单位),请参阅附加的PDF。
你有什么想法出错了吗?
致以最亲切的问候
约翰内斯
嗨gme_johannes,
我不明白你想做什么。您想通过JTAG和使用SmartSnippets工具编程您的自定义板或murata模块吗?你说的“物联网套件程序员板”是什么意思?您是说通信接口板(CIB)吗?为了给你正确的答案,请提供关于连接图更具体的信息。
谢谢,PM_Dialog
我已经收购了带有CIB的IOT传感器开发套件,是的。
使用此CIB,我尝试使用MurataZy和Const Winbond W25x20编写自定义板。
使用UART工作 - >可以编程内存,默塔拉ZY将从闪存中加载固件。
而SWD则不起作用。
让我困惑的是,SWD似乎是有效的,它确实建立了一个连接到模块,但编程flash失败。
请参阅上面的日志。
您还需要哪些信息?
是否可能flash_program .bin(用于UART)支持W25X20,而jtag_program .bin不?
我应该修改和重建此固件吗?
编辑:我已经调查了da1458x_sdk \ 5.0.4 \ umerities \ flash_programmer和我(作为一个外包)看起来w25x20支持不区分UART / JTAG。
此外,GPIOS似乎被拉了,这很好,因为我有其他传感器共享SPI总线(无论如何它与UART工作好,所以我没想到这将是罪魁祸首)。
我也看到了一个可能的关系到这个线程:
https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...
你有上面提到的文件吗?它会有用吗?
PS:我意识到我应该把这张贴在“工具”论坛?也许你可以把它挪开。
我现在注意到,只要W25X20是空的,就可以通过SWD读取和编程flash。
1. Flash被编程,闪光灯的设备靴,工作正常
2.使用SWD打开SS工具箱 - >表现如初始帖子中所述
3.打开SS工具箱与UART ->删除flash
4.使用SWD打开SS Toolbox - >可以成功读取Flash(全部空= FF)[见下面的首页]
5.尝试编写Flash - >成功,但直接(自动)回读失败[下面的第二个日志]
6.成功的Flash编程确认,因为设备再次从闪光开始工作,工作正常
第一个日志
[INFO General @18-08-19 11:01:22]无法测量总红外len。TDO恒定高。
[INFO General @18-08-19 11:01:22]无法测量总红外len。TDO恒定高。
[INFO General @18-08-19 11:01:22]找到ID为0x0BB11477的SWD-DP
[INFO General @18-08-19 11:01:22] FPUnit: 4 code (BP)插槽和0字面值插槽
[信息概述@ 18-08-19 11:01:22]找到了Cortex-M0 R0P0,Little Endian。
[信息概述@ 18-08-19 11:01:22]选择了BLE设备。
[INFO SPI Flash @18-08-19 11:03:16]头记录已从十六进制文件wrbl_sfl_580.hex中删除。
[信息SPI Flash @ 18-08-19 11:03:16]从文件wrbl_sfl_580.hex读取30776字节。
[INFO SPI Flash @18-08-19 11:03:18]找到ID为0x0BB11477的SWD-DP
[信息SPI Flash @ 18-08-19 11:03:18] FpUnit:4代码(BP)插槽和0个字幕插槽
[信息SPI Flash @ 18-08-19 11:03:18]找到了Cortex-M0 R0P0,Little Endian。
[INFO SPI Flash @18-08-19 11:03:19]固件文件C:\Program Files (x86)\Dialog\ SmartSnippetsStudio\Toolbox\common_resources\jtag_program .bin已被选择下载。
[INFO SPI Flash @18-08-19 11:03:19]成功下载固件到单板。
[信息SPI Flash @ 18-08-19 11:03:19]成功配置了SPI闪存端口和引脚。
[信息SPI Flash @ 18-08-19 11:03:33]从内存开始读取32768个字节。
[信息SPI Flash @ 18-08-19 11:03:34]阅读已完成。阅读32768字节。
第二个日志
[INFO SPI Flash @18-08-19 11:05:01]开始烧录地址0x00000的31096字节的数据。
[INFO SPI Flash @18-08-19 11:05:01]内存燃烧完成成功。
[信息SPI Flash @ 18-08-19 11:05:01]阅读内存以刷新内存内容....
[错误SPI Flash @ 18-08-19 11:05:01]地址81FE8的读取内存失败。
[ERROR SPI Flash @18-08-19 11:05:01]读取内存失败。
嗨gme_johannes,
如果您想要连接和读取SPI flash时,它是空的,最可能的原因是您的固件禁用调试器。所以,你能否检查一下你的固件是否禁用了调试器?另外,当闪光灯不空时,你能不能按下复位键,然后试着连接并读取SPI闪光灯?
谢谢,PM_Dialog
嗨pm_dialog,
如在日志中所示
[信息SPI Flash @ 18-08-12 21:04:25]固件文件C:\ Program Files(x86)\ dialog \ smartsnippetsstudio \ toolbox \ common_resources \ jtag_progrogmer.bin已被选中以下载。
[信息SPI Flash @ 18-08-12 21:04:25]成功下载了固件文件到电路板。
[信息SPI Flash @ 18-08-12 21:04:25]成功配置了SPI闪存端口和引脚。
成功加载jtag_program .bin固件到设备。因此,在这一点上,我的固件不再运行…(我也可以通过LED的行为来判断)。
可能是设备在加载jtag_programmer.bin的过程中没有被完全重置(??),并且DA14580中的一些寄存器仍然被编程,因为他们是由我的固件(例如,被禁用的调试器)?
此外,在我对Suxcesspectused Simed Specture的时候,读取闪光灯的读数是多么读取闪存?
毕竟,由于设备未重置,新固件不会从Flash立即加载。
嗨gme_johannes,
在加载JTAG_Programmer.bin的过程中,该设备无法完全复位。您是否检查了固件是否禁用调试器?我试图重现你的问题,但我能够在没有空的情况下成功连接/读取SPI闪存。
谢谢,PM_Dialog
嗨pm_dialog,
我不了解你的论点,因为你说自己:一旦jtag_programmer.bin成功加载(根据日志它是),那么设备完全重置 - 因此,设备中不会存在固件的剩余内容,无论我的固件如何,它都不重要。
不过,让我来回答你的问题:
固件不禁用调试器,但确实我已经为连接到关联端口的两个LED实现了此选项。
我确保不禁用调试器,也不使用关联的GPIO端口。我已经验证了它,因为我可以轻松地通过操作而无法操作。
#ifdef使用_jtag_as_gpio.
setbits16(sys_ctrl_reg,debugger_enable,0);
#别的
SetBits16 (SYS_CTRL_REG DEBUGGER_ENABLE 1);
#万一
#ifdef使用_jtag_as_gpio.
#定义LEDG_PORT GPIO_PORT_1
#define ledg_pin gpio_pin_5.
#定义LEDB_PORT GPIO_PORT_1
#定义LEDB_PIN GPIO_PIN_4
#万一
当它被编程时,我仍然不能读取flash。
嗨gme_johannes,
请尝试通过JTAG编程SPI flash,程序完成后按CIB上的复位按钮,然后尝试连接并读取SPI flash。你能让我知道这是工作吗?正如我能够看到从你的上一个帖子,你的调试器没有禁用,但事实上,这是一个自定义板,我不能复制你的问题。
谢谢,PM_Dialog