自SPI Flash应用程序和jtag_programmer

36个员额/ 0新
最后发表
kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
自SPI Flash应用程序和jtag_programmer

我们有必要写类似SmartSnippets的SPI Flash编程的SPI闪存编程器。

原因是我们想要一个Flash编程UI,它可以自动化一些事情,而不需要用户必须知道闪存的每个区域的偏移地址应该存储什么数据除了DA应用程序FW。使用SS时,用户必须知道偏移地址的位置,才能刷新某条数据供FW使用。

,

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

谢谢,
——潘文凯

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

嗨kqtrinh,

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

2.闪存编程的协议不记录,并是UART和JTAG相当不同,在一般的设备交换使用请求/响应方案UART下从智能片段发送的消息按照以下结构的数据。

  • [ | ]前48位是Header Section,其余的是message Section。
    • 例如,从UART接口读取的SPI是下面的包
      Len(16位) CRC(32位) Op的代码 地址(32位) 长度(16位)
      0 0 x00 x07 标题部分的CRC 0×90(在programmer.c文件ACTION_SPI_READ) 0x00 0x00 0x00 0x00(读取地址) 要读取的数据量
    • 而回应将是。
      Len(16位) CRC(32位) 状态 数据
      0x01 +数据长度 CRC. 为0x82(ACTION CONTENTS) 读数据

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

由于MT_dialog

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
谢谢太。

谢谢太。

在programmer.c,它看起来像USE_UART标志没有在任何地方项目定义。这是否标志对应于你正在谈论的UART模式?

在SS工作室,,当点击SmartSnippets工具箱图标按钮来启动它,它会显示一个对话框供用户选择UART或JTAG模式。这是我的理解,要能闪现新的FW到SPI闪存,用户必须选择JTAG模式和跳J4头为SPI所以SS可以读/写/擦除SPI闪存。我可以选择UART模式和运行SPI Flash编程而J4头跃升为SPI写入新的FW?

我已经测试了两个案例,只有JTAG/SPI J4头选择对我有效。至于UART/SPI J4报头选择,我收到了一个消息“请按下HW复位按钮在板上开始下载过程”,然后我按下按钮,它说复位检测到。之后,所有SPI Flash相关的按钮(函数)都变成灰色。

我提出这个的原因是,我试图理解什么工作,并将模仿自定义Flash UI。如果JTAG模式是唯一的模式,可以工作访问SPI Flash, SS如何检测JTAG连接用户选择JTAG无线电?为了清晰起见,我附上了一张快照。

谢谢,
——潘文凯

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

嗨kqtrinh,

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

打开SS时出现的对话框是用于选择要编程的设备和SS不仅仅是闪光灯之间的通用接口。所以,你可以以闪存程序选择UART模式,但这需要额外的跳线配置,则必须设置跳线的SPI配置也获得了P04针的跳线,并与UART引脚和SPI引脚连接P05(三路跳线)。

由于MT_dialog

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
太,

太,

谢谢你的澄清。
在SS Studio中,我刚刚意识到SS会在选择JTAG时自动选择jtag_programmer.bin,选择UART时自动选择flash_programmer.bin。因此,当选择UART时,USE_UART标志将变为true。

我的问题是选择JTAG单选按钮时,所选择的数字480056116复选框。如何以及在哪里并不SS GET /读取这个数字?这是我的自定义用户界面将需要做同样的部分。你帮忙看一下到SS源代码,可以让我知道它是如何找到的JTAG连接?JTAG模式是我们想为自己的自定义硬件支持一下。

谢谢,
——潘文凯

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
太,

太,

如果你不介意,你能不能也给了ACTION_WRITE和ACTION_ERASE协议格式,你已经给了ACTION_READ以上?这就是我真正需要我的自定义UI。
谢谢,
——潘文凯

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
太,

太,

是从计算或只是从数据字节流的CRC32?
谢谢,
——潘文凯

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
太,

太,

被计算字节流的从操作码(8个比特)的CRC32 |地址(32个比特)|长度(16位)|数据或距离数据?
谢谢,
——潘文凯

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

嗨kqtrinh,

我没有智能片断的源代码,但我怀疑SS使用SEGGER工具和J-LINK指挥官,以便检查。

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

Len(16位) CRC(32位) 操作码 地址偏移(32位) 长度(16位) 数据(长* 8位)
0×07 +长你的bin CRC. 0 x91 地址 长度 数据

Len(16位) CRC(32位) 状态(8位) 错误码(32位)
0 x01 CRC. 0x83 (ACTION_OK)或0x84 (ACTION_ERROR) 额外的错误代码-仅当状态设置为ACTION_ERROR

Len(16位) CRC(32位) Op的代码
0 x01 CRC. 0 x92

Len(16位) CRC(32位) 状态(8位) 错误码(32位)
0 x01 CRC. 0 x83或0 x84 附加错误代码 - 只有当状态设置为行动的错误。

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

由于MT_dialog

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
嗨太,

嗨太,

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

谢谢,
——潘文凯

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
太,

太,

ERASE的格式看起来是错误的。我说,因为flash_programmer不需要知道地址和长度的字节在flash中被擦除?协议消息不包含这些。你能澄清一下吗?在我的DA应用FW中,我为不同的数据定义了flash中的其他区域,因此它们需要被更新或删除。

谢谢,
——潘文凯

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

嗨kqtrinh,

在JTAG模式后的功能是有点不同的(工具访问580的存储器直接在固定地址,以便与580进行通信)程序员定义的BASE_MEMORY和该命令对应的偏移和TARGET_MEMORY用于数据,所以协议比UART有点不同。例如,对于JTAG读取闪存将用于BASE_MEMORY地址和TARGET_MEMORY地址:

内存偏移量 请求内存内容 响应内存内容
ACTION_OFFSET 0 x90 (ACTION_SPI_READ) 0 x00 (NO_ACTION)
SIZE_OFFSET 数据长度 数据长度
ADDRESS_OFFSET 地址 地址
RESULT_OFFSET 不关心 0 x82 (ACTION_CONTENTS)

内存偏移量 请求内存内容 响应内存内容
0 不关心 data0
1 不关心 data1

对于写了JTAG

内存偏移量 请求内存内容 响应内存内容
ACTION_OFFSET 0 x91 (ACTION_FLASH_WRITE) 0 x00 (NO_ACTION)
SIZE_OFFSET 大小 大小
ADDRESS_OFFSET 内存地址 内存地址
RESULT_OFFSET 不关心 0 x83或0 x84
ERROR_OFFSET 不关心 错误代码(32位)-仅当结果是ACTION_ERROR

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

对于擦除通过JTAG:

内存偏移量 请求内存内容 响应内存内容
ACTION_OFFSET 0 x92 (ACTION_FLASH_ERASE) 0 x00 (NO_ACTION)
SIZE_OFFSET 不关心 不关心
ADDRESS_OFFSET 不关心 不关心
RESULT_OFFSET 不关心 0 x83或0 x84
ERROR_OFFSET 不关心 错误代码(32位)-仅当结果是ACTION_ERROR

我提到UART自从我假设更容易附加一个分析器和跟踪两个设备之间的通信(580和智能片段工具)因为我已经提到过没有文档我做相同的事情为了报告协议。在UART行我没有看到额外的头为erase过程,你可以附加一个分析器和验证它,但智能片段向SPI发出一个erase命令,它不写0xFF以擦除它。我假设你想要SPI_ERASE_BLOCK命令/响应,而不是SPI_ERASE,它是:

LEN(16位) CRC(32位) Op的代码 地址(32位) 扇区(16位)
0 x07 CRC. 0 x94 地址 n

LEN(16位) CRC(32位) Op的代码 错误代码(32位)
0 x01 CRC. 0 x83或0 x84 额外的代码错误 - 只有当状态不ACTION_OK设置

由于MT_dialog

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
嗨太,

嗨太,

非常感谢在获得读/写/擦除消息协议做肮脏的工作对我来说。我很欣赏您的支持。

所以,按照你的指导方针来生成发送到580的读/写/擦除消息对我不起作用。我想是时候用逻辑分析仪来检测电路板了。你能告诉我检查UART交通的哪些pin码吗?现在,单板在UART配置中被跳转(J4和J6之间有两个3脚跳线)。

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

谢谢,
——潘文凯

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
嗨太,

嗨太,

我能把flash_programmer放在Keil IDE的调试模式中吗?我在flash_programmer.c源文件中看到了一个标志DEVELOPMENT_MODE,表明它是用于调试的。你能给我一些建议和调试指令吗?我想看到当我从SS或我的自定义UI发送协议命令时,它将触发flash_programmer中的断点。这将是理想的。

谢谢,
——潘文凯

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
把这个从

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

#定义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(periph_setup.h)
port_sel = UART_PIN_PAIR;
# endif

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

嗨kqtrinh,

是的,你可以下载程序到580。您可以连接到智能代码段(打开智能代码段,转到flash程序员选项卡并点击连接按钮,以便激活智能代码段)。完成后,打开flash_programmer项目,编译并下载fw。后,当这种训练工具将从智能片段的按钮操作和发送数据,你将能够抓住的命令,我相信这是去工作只能通过UART的选择因为我不认为你能通过JTAG调试和连接。

至于你已经粘贴代码,它选择将要用于UART的引脚。如果你去UART_PIN_PAIR定义的评论,它说:

#定义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
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
太,

太,

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

*** Using Compiler 'V5.06 update 3 (build 300)', folder: 'C: Development\Embedded\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选择匹配peripherals.o(的.text)执行区空间。
\ Out_jtag \ jtag_programmer。axf:错误:L6406E:执行区域没有空间与。any选择器匹配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警告(s)。
目标不是创造。
构建时间经过:00:00:01

我该如何克服这个问题?
谢谢,
——潘文凯

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

嗨kqtrinh,

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

程序员的FW不包换对于这种规模的(因为你意识到你递减的增加,这将在MCU中运行的代码量的优化级别时),所以你产生太多的数据和当前FW不建立这种使用(程序员本身是相当小,但缓冲加载从智能片段是作为大的整体形象,所以从FW在0x20000000的sysram高达0x2200偏移占有面积FW当你增加了优化,代码生成的出货量超越这个限制,当链接器试图地方将要举办塔数据地址0x20002200会失败)的缓冲区。您可以尝试增加抵消0x20002800如果在编译的代码优化-O0坚持,但我不能够预测这个任何问题,如果有的话,从一些快速测试我可以看到该工具正常运行。

由于MT_dialog

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
谢谢您的指导。我

谢谢您的指导。我现在可以用-O1构建。然后我得到了这个错误:

*** Using Compiler 'V5.06 update 3 (build 300)', folder: 'C: Development\Embedded\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……
连接……
程序大小:Code=6584 RO-data=240 RW-data=1040 ZI-data=33608
FromELF:创建hex文件…
编译后-用户命令#1:fromelf——bincombined——output=".\Out_uart\ flash_programer .bin" ".\Out_uart\ flash_programer .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 Info: Found Cortex-M0 r0p0, Little endian。
* JLink Info: FPUnit: 4代码(BP)槽和0文字槽
* JLink信息:CoreSight组件:
* JLink Info: ROMTbl 0 @ E00FF000
* JLINK信息:ROMTbl 0 [0]:FFF0F000,CID:B105E00D,PID:000BB008 SCS
* JLINK信息:ROMTbl 0 [1]:FFF02000,CID:B105E00D,PID:000BB00A DWT
* JLink Info: ROMTbl 0 [2]: FFF03000, CID: B105E00D, PID: 000BB00B FPB
ROMTableAddr = 0 xe00ff000

目标信息:
------------
设备:ARMCM0
V目标= 3.300V
引脚的状态:
Tck: 0, tdi: 1, tdo: 1, tms: 1, tres: 1, trust: 1
Hardware-Breakpoints: 4
Software-Breakpoints: 8192
监测点:2
JTAG速度:5000千赫

没有找到:20000000H - 20001EB7H的算法
擦除跳过!
错误:Flash下载失败- "Cortex-M0"
Flash加载收于9时46分46秒

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

嗨kqtrinh,

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

由于MT_dialog

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
嗨太,

嗨太,

感谢您的指示,帮助我在调试UART程序员前进。我现在可以调试和看到智能片段在调试模式下的消息凹痕。

我有一个跟进的问题。当点击SPI Flash编程器的连接按钮,这究竟怎么办?点击连接按钮,直到在基板上的RESET按钮被按下未下载UART程序员。所以不应该有SPI闪存编程器和电路板或580 FW发生之间的握手。什么是按RESET按钮做正是呢?我也注意到SPI闪存编程器打印出一个“复位检测”的消息后RESET按钮按下,然后UART程序员将被下载。在此之后,闪存读取/写入/擦除功能,可以从SPI闪存编程行使。

我问这个问题的原因是这样我就可以在我的自定义UI中精确地模拟过程,以防有任何握手,我应该编写代码。SPI Flash程序员得到什么回报按下复位按钮在板上触发它下载数据Flash ?

谢谢,
——潘文凯

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

嗨kqtrinh,

智能片段工具请求击中复位按钮,以使580被重置,以便bootrom的代码将开始执行,然后智能段将赶上0×02标记的下载程序的UART部分在引导程序emmits(STX发射)。当智能跟踪代码段,它知道一个复位应用和uart_programmer被donwloaded到580。

由于MT_dialog

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
嗨太,

嗨太,

难道真的字节从ROM码为0x02值发出的1?我试着按下并没有什么回来后的复位按钮,在UART线主机端读取1个字节。这个循环10次1每秒,仍然一无所获。不波特率和东西需要在主机上进行同步并有望在启动代码这是什么交易可以从UART行读取的前?

谢谢,
——潘文凯

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

嗨kqtrinh,

在引导过程和复位后的580个发送在AN-B-001中描述的内容与该是STX字符是数据,所述580个emmits当其被扫描UART端口中的一个。请检查文件,因为在引导过程的销是固定的,也每对引脚中的不同波特率下工作。如果外部MCU没有相同的波特率它不会是能够跟踪STX字节。

由于MT_dialog

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
嗨太,

嗨太,

所以我遵循AN-B-001文件表5的文件,特别是为从我的自定义Flash UI下载uart程序的握手协议。
我能够在随机继电器中得到0x02(有时我能够在按下复位按钮1秒后得到它。其他时候我是几秒钟后才收到的)
-然后我发送3个字节的ROM代码-与LSB和MSB的UART程序员字节流的SOH
—在环路中旋转,等待ACK = 0x06或NACK = 0x15返回。我没有得到任何反馈(我开始怀疑文档是否仍然有效)。因此,由于这个原因,我现在无法继续使用UART程序员下载来处理Flash ERASE/READ/WRITE。

然而,因为这是我的UI,而不是SmartSnippets,我可以绕过下载UART程序员到580之前,我可以开始锻炼闪光灯功能。所以,我使用Keil的调试器来下载UART程序员,并让它运行。当时我能够检查我们的闪存擦除/读/你提供我在UI编写了和它的工作就像一个魅力写消息协议。

你认为你可以帮助我做腿部工作运行启动代码和SPI Flash程序员通过逻辑分析仪?

谢谢,
——潘文凯

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
我用的是P0_4和P0_5

顺便说一下,我使用的是57.6Kbps波特率的P0_4和P0_5,因为这个引脚配置与我使用的DSPS应用FW作为基线相同。它也是从SmartSnippets下载flash程序员所需的UART配置。

谢谢,
——潘文凯

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

嗨kqtrinh,

请在附件中找到UART上的flash程序员序列的下载。

由于MT_dialog

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
这个文件的格式是什么?

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

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

嗨kqtrinh,

这是一个。logicdata文件,你可以用saleae Logic 1 2 3软件打开这个文件。

由于MT_dialog

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
太,

太,

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

现在我开始怀疑,如果我的板J4跳线配置是错误的(即:只能下载代码,因为我可以和不能收到反馈从板的串行线。)我必须咬紧牙关,用逻辑分析仪查看协议。

附件是我当前580 J4配置的快照。中间的2根黄色线是用于UART flash编程的3脚跳线,P0_4跳线用于UART串口控制台输出。

有了您的帮助,您能告诉我在哪里放置测试引线捕捉SPI闪存编程器和启动代码你送我之间的协议流量?

谢谢,
——潘文凯

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
对不起,图片附呈。请

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

附件:
MT_dialog
离线
最后看到:3个月2个星期前
工作人员
加入:2015-06-08 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
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
嗨太,

嗨太,

我得到了逻辑8,并试图用它来听SPI闪存编程器和580没有成功之间的协议流量。下面是我的步骤:
请看附件中测试引线下的电路板图像。

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

有没有记录在逻辑8应用程序,你送我出了什么协议流量。任何帮助,将不胜感激。
谢谢,
——潘文凯

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

嗨kqtrinh,

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

将分析器的触发器设置在您所设置的其中一条线路上,以便在线路传输时开始捕捉,而且对分析器来说,一个接地就足够了。

由于MT_dialog

kqtrinh
离线
最后看到:3年11个月前
加入:2016-08-24 00:17
嗨太,

嗨太,

所以我想我不确定P0_5在哪里。P0_4标注在板上,P0_5看不到。我猜P0_5引脚是P0_4对面的那个。从图片中,你可以看到,我有测试引线在P0_4和另一个测试引线在它对面的针上,就在跳线下面。我一直以为P0_4标签对面的pin是P0_5 pin。

如果你不介意,你能拍一张你的板和测试引脚的照片吗?
谢谢,
——潘文凯

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

嗨kqtrinh,

请查看正确的连接附件。

由于MT_dialog

主题锁定