自定义SPI Flash应用程序和jtag_programmer

36个职位/ 0个新职位
最后发表
kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
自定义SPI Flash应用程序和jtag_programmer

我们需要编写一个类似于SmartSnippets的spi flash编程的spi flash程序员。

原因是,我们希望Flash编程的用户界面,而无需用户必须知道闪存的每个区域的偏移地址应该存储除了DA应用FW什么样的数据可以自动完成一些事情。与SS,用户必须知道偏移地址位置以闪烁FW消费的某一条的数据。

接着就,随即,

1.在我们的自定义UI中编写SPI Flash编程中的SS子集需要什么?
2.什么是SS SPI闪存编程和jtag_programmer之间的协议?

谢谢,
- khai

设备:
MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨kqtrinh,

嗨kqtrinh,

1. flash_programmer项目接受一系列命令(您可以在程序员中找到这些命令),因此在点击连接按钮后(和程序员FW下载
将这些命令通过UART或via JTAG发送到您的580)Smart Snippets UI。所以在“它需要什么”的问题中,你需要定义更多的命令
并实现了相应的函数。

2.flash程序员的协议没有文档记录,对于UART和JTAG来说非常不同,通常设备使用请求/响应方案交换数据,在UART下从Smart Snippets发送的消息遵循下面的结构。

  • [ | ]前48位是Header Section,其余的是message Section。
    • 因此,例如,从UART接口读取的SPI是以下数据包
      Len(16位) CRC(32位) 操作码 地址(32位) 长度(16个比特)
      为0x00 0x07的 在报头部分的CRC 0x90(在program_c文件中的ACTION_SPI_READ) 0x00 0x00 0x00 0x00(读取地址) 要读取的数据量
    • 并将是的。
      Len(16位) CRC(32位) 状态 数据
      0×01 +数据长度 儿童权利公约 0 x82(行动内容) 读取数据

因为这不是记录和没有一个可用的应用程序注意在创建工具(作为)写一个自定义应用程序的最好方法是调查两个设备之间的通信通过逻辑分析仪来捕获和复制在您的应用程序的命令。

谢谢mt_dialog.

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
谢谢mt。

谢谢mt。

在programming .c中,看起来USE_UART标志在项目中的任何地方都没有定义。这个标志是否与您所说的UART模式相对应?

在SS Studio中,当点击SmartSnippets工具箱图标按钮来启动它时,它会显示一个对话框供用户选择UART或JTAG模式。我的理解是,为了能够flash新的FW到SPI flash,用户必须选择JTAG模式,并跳过J4头作为SPI,以便SS可以读/写/擦除SPI flash。我可以选择UART模式和运行SPI Flash程序员写新的FW,而J4头跳作为SPI?

我已经测试了这两种情况,只有JTAG / SPI J4标题选择适用于我。至于UART / SPI J4标题选择,我收到了一条消息“请按下电路板上的HW重置按钮开始下载过程”,然后按下按钮并检测到它的重置。之后,所有SPI闪存相关按钮(函数)都是灰色的。

我之所以提出这是我想了解什么可行,会模仿,在自定义Flash用户界面。如果JTAG模式仅可工作访问SPI闪存模式,如何SS检测根据用户选择的JTAG连接JTAG收音机吗?我附上快照PIC的清晰度。

谢谢,
- khai

附件:
MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨kqtrinh,

嗨kqtrinh,

是的,USE_UART标志将程序员设置为UART模式(您可以从Keil的下拉框更改该选项,以便为programmer_uart而不是programmer_jtag构建程序)。

打开SS时出现的对话框是为了选择要编程的设备和SS之间的通用接口,而不仅仅是flash。所以你可以选择UART模式为了程序flash,但这需要额外的跳线配置,您必须设置跳投在SPI配置也有P04针跳线和连接P05 UART销和SPI销(三路跳投)。

谢谢mt_dialog.

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
公吨,

公吨,

谢谢你的解释。
From SS Studio, I just realized SS will automatically pick jtag_programmer.bin when JTAG is selected and flash_programmer.bin when UART is selected.因此,选择UART时,USE_UART标志将变为真实。

我的问题是,当选择JTAG单选按钮时,一个编号为480056116的复选框被选中。SS从哪里得到/读取这个数字?这是我的自定义UI需要做同样的事情的部分。你能帮助查看SS源代码,并让我知道它如何找到JTAG连接吗?JTAG模式是我们想要支持的我们自己的自定义HW。

谢谢,
- khai

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
公吨,

公吨,

如果你不介意,你能给ACTION_WRITE和ACTION_ERASE的协议格式,就像你给ACTION_READ的一样吗?这就是我的自定义UI所需要的。
谢谢,
- khai

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
公吨,

公吨,

是计算字节流的CRC32从还是仅仅从数据?
谢谢,
- khai

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
公吨,

公吨,

是计算字节流的CRC32从OpCode(8位)|地址(32位)|长度(16位)|数据还是仅仅从数据?
谢谢,
- khai

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨kqtrinh,

嗨kqtrinh,

我没有智能片段的源代码,但我怀疑SS使用segger工具和J-lInk指挥官为了检查。

WRITE和UART请求和响应的擦除操作的协议如下。

Len(16bits) CRC(32位) 操作码 地址偏移(32位) 长度(16个比特) 数据(长* 8位)
0x07 +长度你的箱子 儿童权利公约 0x91 地址 长度 数据

Len(16位) CRC(32位) 状态(8位) 错误码(32位)
0 x01 儿童权利公约 0x83 (ACTION_OK)或0x84 (ACTION_ERROR) 额外的错误代码 - 仅当状态设置为action_error时

Len(16位) CRC(32位) 操作码
0 x01 儿童权利公约 0x92

Len(16位) CRC(32位) 状态(8位) 错误码(32位)
0 x01 儿童权利公约 0x83或0x84 附加错误代码-仅当状态设置为动作错误时。

CRC仅为消息部分计算,这意味着OpCode - Address - Length - Data

谢谢mt_dialog.

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
嗨MT,

嗨MT,

您一直提到上面的flash读/写/擦除请求的格式是针对UART连接的,对JTAG连接来说不是同样的吗?如果没有,那么能否也提供JTAG的flash功能?

谢谢,
- khai

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
公吨,

公吨,

erase的格式看起来不错。我说,因为flash_programmer不需要知道要删除的闪光灯中的地址和长度?协议消息既不包含这些消息。你能澄清吗?使用我的DA应用程序FW,我确实在Flash中定义了不同数据的其他区域,因此需要更新或擦除。

谢谢,
- khai

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨kqtrinh,

嗨kqtrinh,

在JTAG模式functionallity略有不同(该工具直接访问内存的580固定地址为了与580)程序员定义命令的BASE_MEMORY和相应的补偿和TARGET_MEMORY数据,所以比uart协议略有不同。例如,JTAG的读flash将是BASE_MEMORY地址和TARGET_MEMORY地址:

内存偏移量 请求存储内容 响应内存内容
ACTION_OFFSET 0x90(action_spi_read) 0x00(no_action)
size_offset. 数据长度 数据长度
ADDRESS_OFFSET 地址 地址
结果_offset. 不在乎 0x82(action_contents)

内存偏移量 请求存储内容 响应内存内容
0 不在乎 data0
1 不在乎 data1

用于写在JTAG上

内存偏移量 请求存储内容 响应内存内容
ACTION_OFFSET 0x91(action_flash_write) 0x00(no_action)
size_offset. 大小 大小
ADDRESS_OFFSET 内存地址 内存地址
结果_offset. 不在乎 0x83或0x84
ERROR_OFFSET 不在乎 错误代码(32位)-仅当结果是ACTION_ERROR

内存偏移量 请求存储内容 响应内存内容
0 data0 data0
1 data1 data1

对于擦除JTAG:

内存偏移量 请求存储内容 响应内存内容
ACTION_OFFSET 0 x92 (ACTION_FLASH_ERASE) 0x00(no_action)
size_offset. 不在乎 不在乎
ADDRESS_OFFSET 不在乎 不在乎
结果_offset. 不在乎 0x83或0x84
ERROR_OFFSET 不在乎 错误代码(32位)-仅当结果是ACTION_ERROR

我提UART,因为我想,这是容易将分析器和跟踪两个设备之间(580和Smart摘录工具)的通信,因为正如我已经提到的媒体链接不存在的文件,所以我在做同样的事情为了报告的协议。在UART线我没有看到的擦除过程额外的头,你可以将一个分析和验证,但聪明的片断问题擦除命令到SPI它不会为了抹掉它写0xFF的。我想你想的SPI_ERASE_BLOCK命令/响应,而不是SPI_ERASE,那就是:

Len(16位) CRC(32位) 操作码 地址(32位) 部门(16位)
0 x07 儿童权利公约 0x94 地址 N

Len(16位) CRC(32位) 操作码 错误码(32位)
0 x01 儿童权利公约 0x83或0x84 附加的代码错误-仅当状态没有设置在ACTION_OK

谢谢mt_dialog.

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
嗨MT,

嗨MT,

非常感谢您为我做了肮脏的工作,获得了读/写/擦除的消息协议。我非常感谢你们所有人的支持。

因此,在生成发送到580的读/写/删除消息时,遵循指南的指导方针对我不起作用。我认为现在是时候用逻辑分析仪探测电路板了。你能告诉我哪个引脚检查UART流量吗?目前,电路板以UART配置跳转(J4和J6之间的两个3针跳线)。

您可以给我尽可能详细的说明,因为我可能需要了解如何使用逻辑分析仪检查UART流量。我对它一点也不熟练。

谢谢,
- khai

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
嗨MT,

嗨MT,

我可以在Keil IDE中实际将Flash_Programmer放在调试模式中吗?我在Flash_Programmer.code文件中看到了一个标志Development_Mode,指示它用于调试。你能建议并给我调试指令吗?我想看看什么时候从SS或My Custom UI发送协议命令时,它将触发Flash_Programmer中的断点。这将是理想的。

谢谢,
- khai

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
从中切和粘贴

从programmer.c文件中剪切并粘贴。不知道这是什么意思。

#define uart_pin_pair 4 //(0 :( p0_0,p0_1),2 :( p0_2,p0_3),4 :( p0_4,p0_5),6 :( p0_6,p0_7))

# ifdef USE_UART
SetWord16(CLK_PER_REG,UART1_ENABLE);//启用时钟UART1
#ifdef DEVELOPMENT_MODE //要使用调试器,请定义它并根据单板配置设置UART_PIN_PAIR (pher_setup .h)
port_sel = UART_PIN_PAIR;
#万一

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨kqtrinh,

嗨kqtrinh,

是的,你可以donwload程序员到580可以连接到智能片断(开放式智能片段去flash编程标签并点击连接按钮,以便智能段被激活)。做得比开flash_programmer项目之后,编译和下载固件。之后hiiting从智能片段中的按钮时,该工具将运行并发送数据,你将能够赶上的命令,我相信,这只是通过UART选项去工作,因为我不认为你将能够调试,并通过JTAG连接。

对于您所粘贴的代码,它选择将用于UART的引脚。如果你转到注释处的UART_PIN_PAIR定义,它说:

#define uart_pin_pair 4 //(0 :( p0_0,p0_1),2 :( p0_2,p0_3),4 :( p0_4,p0_5),6 :( p0_6,p0_7))

因此,如果在4中有定义,则意味着P04和P05引脚将用于UART。

SetWord16 (CLK_PER_REG UART1_ENABLE);使能UART时钟

port_sel = UART_PIN_PAIR为指定的一对选择UART波特率(根据设计,每个UART对由标准波特率分配)。

谢谢mt_dialog.

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
公吨,

公吨,

谢谢你的信息。所以在Keil中,我将优化选项设置为0表示不进行优化,这样我就可以逐步通过代码并设置断点。当我选择这个选项并重新编译代码时,我得到了以下错误:

***使用编译器'v5.06更新3(build 300)',文件夹:'c:\ development \嵌入\ keil \ arm \ armcc \ bin'
构建目标“programmer_jtag”
编译crc32.c ...
编译system_CMSDK.c……
编译peripherals.c ...
编译otpc.c……
编译uart.c……
编译i2c_eeprom.c……
编译spi_flash.c ...
编译spi.c ...
编译gpio.c.
编译programmer.c ...
联...
\ Out_jtag \ jtag_programmer。axf:错误:L6406E:执行区域没有空间与。any选择器匹配spi.o(.text)。
\ Out_jtag \ jtag_programmer。axf:错误:L6406E:执行区域没有空间与。any选择器匹配periphers .o(.text)。
。\ out_jtag \ jtag_programmer.axf:错误:l6406e:匹配otpc.o(.text)的执行区域中没有空格。
\ Out_jtag \ jtag_programmer。axf:错误:L6406E:执行区域没有空间与。any选择器匹配system_cmsdk.o(.text)。
\ Out_jtag \ jtag_programmer。axf:错误:L6406E:执行区域没有空间与。any选择器匹配spi_flash.o(.constdata)。
\ Out_jtag \ jtag_programmer。axf:错误:L6406E:执行区域没有空间与。any选择器匹配uidiv.o(.text)。
\ Out_jtag \ jtag_programmer.axf:错误:L6406E:与.ANY选择匹配memcpya.o(的.text)中执行区中没有空间。
\ Out_jtag \ jtag_programmer。axf:错误:L6406E:执行区域没有空间与。any选择器匹配memset .o(.text)。
\ Out_jtag \ jtag_programmer。axf:错误:L6406E:执行区域没有空间与。any选择器匹配startup_cmsdk_cm0.o(.text)。
。\ out_jtag \ jtag_programmer.axf:错误:l6406e:没有执行区域的空间.any选择器匹配uart.o(i .__ arm_common_switch8)。
\ Out_jtag \ jtag_programmer。axf: Error: L6407E: section of aggregate size 0x54c bytes could not fit into any selector(s). axf: Error: L6407E: section of aggregate size 0x54c bytes could not fit into any selector(s)。
没有足够的信息以列表图像符号。
没有足够的信息来列出图像映射。
Finished: 2条信息,0条警告和11条错误信息。
“。\ out_jtag \ jtag_programmer.axf” - 11错误(s),0警告。
没有创建目标。
建造时间消逝:00:00:01

如何克服这个问题?
谢谢,
- khai

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨kqtrinh,

嗨kqtrinh,

使用-O1优化和灰色断点的原因是您正在构建jtag_programmer而不是uart_programmer。如前所述,您不能在jtag上运行jtag_programmer(调试数据和实际数据是在同一个接口上传输的)。因此,从下拉框从programmer_jtag切换到programmer_uart,您将能够运行和调试代码。如果你要使用-O0,你也会得到一个错误。

程序员并不表示“状态”的弗兰克-威廉姆斯这样的大小(当你意识到当减少优化你的水平增加的代码将运行在单片机)所以你生产太多的数据和当前的弗兰克-威廉姆斯不是构建对于这种使用(程序员本身很小但加载弗兰克-威廉姆斯的缓冲区聪明的片段,这是作为一个整体形象,所以弗兰克-威廉姆斯占地面积从sysram到0 0 x20000000 x2200抵消增加优化时,生成的代码超过限制,当链接器试图将保存那数据的缓冲区地址0 x20002200会失败)。如果您坚持在-O0优化中编译代码,您可以尝试将偏移量增加到0x20002800,但我不能预测这方面的任何问题,如果有任何问题,从一些快速测试中,我可以看到工具运行正常。

谢谢mt_dialog.

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
THX为指令。一世

THX为指令。现在我可以建立与-O1。然后我得到这个错误:

***使用编译器'v5.06更新3(build 300)',文件夹:'c:\ development \嵌入\ keil \ arm \ armcc \ bin'
重建目标“programmer_uart”
组装startup_CMSDK_CM0.s……
编译system_CMSDK.c……
编译crc32.c ...
编译peripherals.c ...
编译otpc.c……
编译uart.c……
编译i2c_eeprom.c……
编译spi_flash.c ...
编译spi.c ...
编译gpio.c.
编译programmer.c ...
联...
程序大小:代码= 6584 RO-数据= 240 RW-数据= 1040 ZI-数据= 33608
从自己:创建十六进制文件......
后生成 - 用户命令#1: “\ Out_uart \ flash_programmer.bin”。fromelf的--bincombined --output = “\ Out_uart \ flash_programmer.axf”
”。\ Out_uart \ flash_programmer。axf" - 0错误(s), 0警告(s)。
建造时间消逝:00:00:02
负载“C: \ \开发\ \中\ \ DialogSemi \ \ SDK 5.0.4 \ \ DA1458x_SDK \ \ 5.0.4 \ \工具\ \ flash_programmer \ \ Out_uart \ \ flash_programmer.axf”
将JLink项目文件设置为"C: Development\Embedded\DialogSemi\SDK 5.0.4\DA1458x_SDK\5.0.4\utilities\flash_programmer\JLinkSettings.ini"
* JLink信息:设备“CORTEX-M0”被选中。

JLink信息:
------------
DLL: V5.12f,编译于2016年5月17日16:03:35
固件:J-Link OB-SAM3U128 V1 compiled july 5 2016 08:42:08
硬件:v1.00
S / N: 480056116

* JLink Info: Found SWD-DP with ID 0x0BB11477
* jlink信息:找到cortex-m0 r0p0,小endian。
* jlink信息:fpUnit:4代码(BP)插槽和0个字幕插槽
* JLink信息:CoreSight组件:
* jlink信息:romtbl 0 @ E00FF000
* JLink Info: ROMTbl 0 [0]: FFF0F000, CID: B105E00D, PID: 000BB008 SCS
* JLink Info: ROMTbl 0 [1]: FFF02000, CID: B105E00D, PID: 000BB00A DWT
* JLINK信息:ROMTbl 0 [2]:FFF03000,CID:B105E00D,PID:000BB00B FPB
ROMTableAddr = 0xE00FF000

目标信息:
------------
设备:ARMC0.
VTarget = 3.300 v
针的状态:
Tck: 0, tdi: 1, tdo: 1, tms: 1, tres: 1, trust: 1
Hardware-Breakpoints: 4
Software-Breakpoints: 8192
监测点:2
JTAG速度:5000 kHz

没有算法发现:20000000H - 20001EB7H
抹去了!
错误:Flash下载失败 - “Cortex-M0”
Flash Load在09:46:46结束

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨kqtrinh,

嗨kqtrinh,

转到“目标选项”,选择“实用工具”选项卡,在该选项卡中选择“使用外部工具进行Flash编程”。

谢谢mt_dialog.

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
嗨MT,

嗨MT,

感谢帮助我继续调试UART程序员的说明。我现在能够在调试模式下调试并查看Smart Snippets的消息凹陷。

我有一个后续问题。当点击连接按钮在SPI Flash程序员,这究竟做什么?单击Connect按钮没有下载uart程序,直到板上的RESET按钮被按下。所以不应该有任何握手之间的SPI Flash程序员和板或580 FW发生。然后按下RESET按钮会做什么呢?我确实注意到SPI Flash程序员打印出一个“重置检测”消息Reset按钮按下和UART程序员将随后下载。在此之后,可以从SPI flash Programmer执行flash读写/擦除函数。

原因我问这个问题,所以我可以模仿完全过程中我的自定义UI,以防有任何握手,我应该编码了。什么是SPI闪存编程器获取在按下主板上的RESET按钮复位来触发它来下载数据闪存?

谢谢,
- khai

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨kqtrinh,

嗨kqtrinh,

Smart Snippets工具请求按下复位按钮,以便对580进行复位,使引导程序代码开始执行,然后Smart Snippets将捕获引导加载程序在下载过程的UART部分(STX传输)期间发出的0x02标记。当Smart Snippets跟踪它时,它知道应用了重置并将uart_programmer下载到580。

谢谢mt_dialog.

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
嗨MT,

嗨MT,

它真的是从ROM代码发出0x02值的一个字节吗?在按下复位按钮后,我尝试从UART行上的主机端读取1个字节,但没有得到任何返回。每秒钟循环10乘以1,仍然一无所获。波特率和东西需要在主机上同步吗?在从UART行读取该事务之前,引导代码中预期的内容是什么?

谢谢,
- khai

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨kqtrinh,

嗨kqtrinh,

在AN-B-001中描述了启动过程和580重置后传输的内容,是的,STX字符是580在扫描UART端口时发送的数据之一。请检查文档,因为启动程序的引脚是固定的,而且每个引脚对在不同的波特率下工作。如果你的外部MCU没有相同的波特率,它将无法跟踪STX字节。

谢谢mt_dialog.

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
嗨MT,

嗨MT,

所以我遵循AN-B-001文件表5的文件,特别是为从我的自定义Flash UI下载uart程序的握手协议。
我能够在随机继电器中得到0x02(有时我能够在按下复位按钮1秒后得到它。其他时候我是几秒钟后才收到的)
-然后我发送3个字节的ROM代码-与LSB和MSB的UART程序员字节流的SOH
- 自旋在一个循环等待用于ACK = 0×06或NACK = 0×15回来。我没有什么未来可言回来(我开始怀疑,如果该文件仍然有效)。所以因为这个我现在不坚持能与UART程序员下载向前来处理闪存擦除/读/写。

但是,因为这是我的UI而不是SmartSnippets,所以在开始使用flash函数之前,我可以绕过将UART程序员下载到580。因此,我使用Keil调试器下载UART程序并让它运行。然后我可以检查你提供的Flash擦除/读/写消息协议,我在我的UI中编写的,它工作得很好。

你认为你可以帮助我做运行引导代码和SPI闪存程序员的腿部工作吗?

谢谢,
- khai

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
我用的是P0_4和P0_5

我使用的为57.6kbps波特率的P0_4和P0_5的方式,因为这引脚配置是一样的,在该DSPS应用FW我作为一个基线。这也是从SmartSnippets闪存编程下载所需的UART配置。

谢谢,
- khai

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨kqtrinh,

嗨kqtrinh,

随函附上了UART的闪存编程序列的下载。

谢谢mt_dialog.

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
这个文件的格式是什么?

这个文件的格式是什么?似乎是二元的。如何看待它?
谢谢,
- khai

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨kqtrinh,

嗨kqtrinh,

它的一个.logicdata文件,您可以使用Saleae Logic 1 2 3软件打开此文件。

谢谢mt_dialog.

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
公吨,

公吨,

感谢您的日志文件。我下载了Saleae软件,能够看到数据。AN-B-001文件正确地描述了协议。

现在我开始想知道我的电路板J4跳线配置是错误的(即:只能下载代码,因为我可以在串行线上从电路板接收反馈。)。我必须咬住子弹并用逻辑分析仪查看协议。

附件是我目前的580 J4配置的快照。在中间的2根黄色导线连接为UART闪存编程而P0_4跳线为UART串行控制台输出的3个跳线。

在您的帮助下,您能告诉我在哪里放置测试线索来捕获SPI Flash程序员和您发送给我的引导代码之间的协议流量吗?

谢谢,
- khai

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
对不起,图片附呈。请

对不起,图片附呈。请检查我的J4配置的图片,看看您是否有建议,以防它是错误的。

附件:
MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨kqtrinh,

嗨kqtrinh,

下载代码时的流量(UART_flash_programmer)位于引脚P04和P05, ATMEL处理器的RX和TX也充当jlink。之后,如果您希望观察SPI事务,您需要探测MISO和MOSI线(为了让分析器解释数据,CLK和CS)。默认情况下,智能片段的默认行是P05 (MISO) / P06 (MOSI) / P00 (CLK) / P03 (CS)。单板的配置似乎没问题。

谢谢mt_dialog.

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
嗨MT,

嗨MT,

我得到了逻辑8,并试图使用它来侦听SPI Flash程序员和580之间的协议流量没有成功。以下是我的步骤:
请参阅测试引线下的董事会附带的图像。

1.如图所示,对UTX和URX引脚使用逻辑8通道0和通道1线。将通道0和通道1的黑线接地到USB连接器上,如图所示
2.在逻辑应用软件中,为两个串行通道创建两个串行分析仪,并将它们都设置为576000波特率
3.在SPI Flash程序员,单击连接按钮
4.单击Logic 8应用程序中的Start按钮以启动捕获
5.按主板上的RESET按钮
6.下载UART编程器

在你发给我的逻辑8应用程序中没有记录协议流量。任何帮助都将不胜感激。
谢谢,
- khai

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨kqtrinh,

嗨kqtrinh,

我猜你想探测URX和UTX线以检查下载过程,从附件的图片中我可以看到你已经在P04上连接了两个分析仪探头(我无法从图片中理解)。您必须探测P04和P05(两个UART引脚)。我也认为576000是个打印错误。

将分析器的触发器设置在您已经设置的一个线中,以便在线发射时启动捕获也是一个地面足以用于分析仪。

谢谢mt_dialog.

kqtrinh.
离线
最后看到:4年2个月前
加入:2016年8月24日00:17
嗨MT,

嗨MT,

所以我想,我不知道在哪里P0_5然后。P0_4标记在电路板上,而P0_5都看不出来。我猜P0_5引脚对面P0_4之一。从图片中,你可以看到,我对P0_4表笔与右边的跳线下对面它的引脚上的另一个测试导线。我一直的印象是对面P0_4标签的引脚是P0_5引脚下。

如果你不介意,你能用销钉拍照你的电路板。
谢谢,
- khai

MT_dialog
离线
最后看到:6个月2周前
工作人员
加入:2015-06-08 11:34
嗨kqtrinh,

嗨kqtrinh,

请查看附件是否有正确的连接

谢谢mt_dialog.

主题锁定