程序SPI Flash: UART工作,JTAG错误…地址或佣金81

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
10个帖子/ 0个新
最后发表
gme_johannes
离线
最后看到:5天16小时前
加入:2017-12-22 10:09
程序SPI Flash: UART工作,JTAG错误…地址或佣金81

亲爱的对话框支持,

我有一个定制板Murara ZY模块(DA14580),附件是一个SPI flash Winbond W25X20。
我直接编程DA14580,或通过智能片段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
[INFO General @18-08-12 21:01:50] FPUnit: 4 code (BP)插槽和0字面值插槽
[INFO General @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。
[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端口和引脚。

读取不工作(flash/erase也不工作)


[INFO SPI Flash @18-08-14 22:22:06]开始从内存中读取32768字节。
[ERROR SPI Flash @18-08-14 22:22:06]读取地址81FE8内存失败。
[ERROR SPI Flash @18-08-14 22:22:06]读取内存失败。

两种情况下的配置是相同的(SPI Flash引脚配置,SPI Flash选项,SPI Flash内存大小(十六进制,字节),见附加的pdf。

你知道会出什么问题吗?

致以最亲切的问候
约翰内斯

附件:
设备:
PM_Dialog
离线
最后看到:6天15小时前
工作人员
加入:2018-02-08 11:03
嗨gme_johannes,

嗨gme_johannes,

我不明白你想做什么。您想通过JTAG和使用SmartSnippets工具编程您的自定义板或murata模块吗?你说的“物联网套件程序员板”是什么意思?您是说通信接口板(CIB)吗?为了给你正确的答案,请提供关于连接图更具体的信息。

谢谢,PM_Dialog

gme_johannes
离线
最后看到:5天16小时前
加入:2017-12-22 10:09
我已经获得了物联网

是的,我已经获得了CIB附带的物联网传感器开发工具包。
使用这个CIB,我尝试用Murata ZY和附加Winbond W25X20编写自定义板。

与UART它工作->内存可以编程,和村田ZY将加载固件从闪存。
而SWD则不起作用。
让我困惑的是,SWD似乎是有效的,它确实建立了一个连接到模块,但编程flash失败。
在上面看到的日志。

您还需要哪些信息?

gme_johannes
离线
最后看到:5天16小时前
加入:2017-12-22 10:09
有没有可能是那个闪光

是否可能flash_program .bin(用于UART)支持W25X20,而jtag_program .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:我意识到我应该把这张贴在“工具”论坛?也许你可以把它挪开。

gme_johannes
离线
最后看到:5天16小时前
加入:2017-12-22 10:09
我现在已经注意到了

我现在注意到,只要W25X20是空的,就可以通过SWD读取和编程flash。

1.Flash被编程,设备从Flash启动,工作正常
2.使用SWD ->打开SS工具箱的行为如最初的文章所述
3.打开SS工具箱与UART ->删除flash
4.Open SS Toolbox with SWD -> can read flash successfully (all empty = FF)[参见下面第一个日志]
5.尝试写入flash ->成功,但立即(自动)readback失败[参见下面的第二个日志]
6.确认flash编程成功,因为设备再次从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字面值插槽
[INFO General @18-08-19 11:01:22]找到了Cortex-M0 r0p0, Little endian。
[INFO General @18-08-19 11:01:22] BTLE设备已选择。
[INFO 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字节。
[INFO 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。
[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]成功下载固件到单板。
[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字节。

第二个日志

[INFO SPI Flash @18-08-19 11:05:01]开始烧录地址0x00000的31096字节的数据。
[INFO 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的内存失败。
[ERROR SPI Flash @18-08-19 11:05:01]读取内存失败。

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

嗨gme_johannes,

如果您想要连接和读取SPI flash时,它是空的,最可能的原因是您的固件禁用调试器。所以,你能否检查一下你的固件是否禁用了调试器?另外,当闪光灯不空时,你能不能按下复位键,然后试着连接并读取SPI闪光灯?

谢谢,PM_Dialog

gme_johannes
离线
最后看到:5天16小时前
加入:2017-12-22 10:09
嗨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_program .bin固件到设备。因此,在这一点上,我的固件不再运行…(我也可以通过LED的行为来判断)。
可能是设备在加载jtag_programmer.bin的过程中没有被完全重置(??),并且DA14580中的一些寄存器仍然被编程,因为他们是由我的固件(例如,被禁用的调试器)?

此外,在我成功编程一次之后,读取flash怎么会立即失败呢?
毕竟,新的固件不会立即从闪存加载,因为设备没有重置。

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

嗨gme_johannes,

在加载jtag_programmer.bin的过程中,设备不可能没有被完全重置。你是否检查了你的固件是否禁用了调试器?我试图重现你的问题,但我能够成功连接/读取SPI flash,而不是空的。

谢谢,PM_Dialog

gme_johannes
离线
最后看到:5天16小时前
加入:2017-12-22 10:09
嗨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
#定义LEDG_PORT GPIO_PORT_1
#定义LEDG_PIN GPIO_PIN_5
#定义LEDB_PORT GPIO_PORT_1
#定义LEDB_PIN GPIO_PIN_4
# endif

当它被编程时,我仍然不能读取flash。

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

嗨gme_johannes,

请尝试通过JTAG编程SPI flash,程序完成后按CIB上的复位按钮,然后尝试连接并读取SPI flash。你能让我知道这是工作吗?正如我能够看到从你的上一个帖子,你的调试器没有禁用,但事实上,这是一个自定义板,我不能复制你的问题。

谢谢,PM_Dialog