我试图通过UART与STM32编程DA14580。我遵循了“DA1458x从串行接口引导”文档的介绍。
我将。hex文件转换为。bin文件到。h文件(这是。bin数据的一个简单数组)。bin文件工作得很好,当我用SmartSnippets直接将它闪光到SRAM时。
但是用UART闪光我有问题。我在做什么:
—从DA收到0x02
—从STM32发送0x01, LSB, MSB
—从DA收到0x06 (ACK)
—从STM32发送SW Code Bytes (array)
-接收CRC(正确/已检查)
—从STM32发送0x06 (ACK)
但我看不到DA广告,它在那之后仍然发送0x02。
这是否意味着闪烁是错误的?有人知道为什么吗?
设备:
嗨christianrudmann,
我想说的是,设备点击重置,进入另一轮的引导加载程序,我猜这就是为什么你看到一个额外的0x02字节后,完成下载你的图像,也许fw,你正在下载580导致设备重置。
由于MT_dialog
我在SysRAM和另一次在外部SPI-Flash中闪烁。bin。这两者都适用。所以我认为这不是密码。
另外,我比较了所有三种类型的闪烁的SysRAM的代码,它们是相同的。
我想DA14580不是重新映射和重启。这只是一个假设。
嗨christianrudmann,
ROM引导加载程序负责从系统ram重新映射设备,并且sw在通过UART下载fw后立即重置设备,如果你在设备获得fw后立即得到0x02,那么我唯一合理的解释是设备以某种方式重置。你能从SDK中的示例中下载fw吗?或者外部MCU下载到580的二进制文件有什么问题?
由于MT_dialog
1)。是的,我试图编程一个修改的例子(只是编辑配置文件)从sdk。
2)。我比较了DA14580的SysRAM通过UART和SPI (SPI工作)的闪烁,所以我确保每个字节都是正确的。唯一的区别是4字节直接后面的SysRAM部分,我是闪烁。Uart: 6 * 0x00;SPI: 0xEC 0x90 0x00 0x20 0x01 0x00。但是该信息没有存储在SPI flash中。
有没有可能查出上次重置的原因?也许是复位寄存器之类的?
嗨christianrudmann,
不,580上没有这样的寄存器以便暴露最后的重置原因。您是否尝试过通过智能片段UART引导程序下载图像,并检查是否能够通过UART成功下载?
额外的字节,你看到在实际的二进制是附加的智能片段工具,以便为引脚配置(仅由flash_programmer使用),这些字节是不使用实际的二进制,所以不必添加这些字节在字节头长度和你不必发送这些字节在你的自定义加载器。bin字节足够。
由于MT_dialog
你好,
是的,尽管SmartSnippets UART工作(在演示板上,因为我的板没有直接访问UART)。所以SW应该没问题。
我在我的板上有一个状态LED,所以我可以看到当我从DA14580得到一个正确的CRC。用一个欺骗软件在我的板上工作。
-在Keil模式下重置DA(调试模式)
—运行DA并通过UART加载SW
当LED亮起时停止DA(传输完成)
—在调试模式下修改SYS_CTRL_REG (0x50000012),并设置重映射位(位1)和SW复位(位15)(就像在SW传输后应该做的那样)并运行
-我能看到我的设备,所以SW在工作
你知道问题出在哪里吗?
嗨christianrudmann,
你可以尝试通过智能片段下载代码到自定义板或比较智能片段的程序时,通过UART下载与自定义下载通过外部MCU。由于fw按照它应该的方式运行,那么在定制板的h/w上或在智能片段和外部MCU之间的下载过程中必然存在差异。
从你为设备运行所应用的技巧来看,似乎确实是将代码下载到系统ram中(因为重映射到系统ram和sw重置使该技巧),并且引导加载程序重映射和重置设备是毫无疑问的。如果重新映射和发行一个重置您能够运行之前下载的弗兰克-威廉姆斯也许你应该检查电源的580,有一种情况存在不稳定电压供应设备将会在一个未定义的状态,还可以检查是否执行引导装载程序下载后的图像(如果它可能检查其他针引导芯片使用的以确定设备确实引导装载程序运行)。
由于MT_dialog