ROM Bootloader搜索扫描UART端口,如果一个端口无法完成设备跳转到下一个可用端口的过程,则由于引导加载程序False ADC读取580在某些情况下不要重复引导代码,但它将以引导程序结束,它将留在可用的JTAG中以便从那里启动。没有指示特定端口的引导失败,设备只需扫描下一个接口即可。要重新启动引导加载程序,请再次从扫描中扫描,您可以从主机发出重置。如果CRC从580匹配计算的CRC,则最终ACK将从主机发送,如果它匹配,则580应该得到OK并继续启动,如果不是,则可以重置设备以重新运行Bootloader。
嗨,山崎,
DA14580_01必须能够从所有八(8)个P0_N端口启动。
在引导期间,它“扫描”外部设备的所有P)端口,例如在UART, SPI, I2C。
确保您正在使用的baord是为您喜欢使用的UART对连接的。
Rev C2主板默认连接为P0_4/P0_5。
此致,
对话框支持团队。
嗨支持会员,
DA14580_01必须能够从所有八(8)个P0_N端口启动。
在引导期间,它“扫描”外部设备的所有P)端口,例如在UART, SPI, I2C。
如果我只想使用端口P0_4和P0_5从UART引导,DA14580必须扫描另一个端口
外部设备吗?我们要不要停止其他的扫描比如SPI, I2C。
在启动过程中,它会“扫描”所有外部设备的端口。这是BootROM做的,不允许客户修改。如果您想通过外部设备使用端口P0_4和P0_5从UART引导,您可以在OTP中编写第二个引导加载程序。请参阅文件http://support.dialog semiconductor.com/um - b - 012 -创造-二级boot..。
嗨fh_dialog,
我正在设计新的板,其中包括一个外部SPI Flash MX25L2006E。
我试图从P0_4和P0_5的UART启动,并将固件写入MX25L2006E。
该方法在DA14580DEVKT-B中得到了验证。但当我尝试我的新设计板时,它失败了。故障发生在单板检测到Reset信号后,开始下载固件,但是下载失败。日志文件如下:
[INFO @14-12-26 10:24:54]固件文件C:\Users\Tri\SmartSnippets\resources\flash_programmer.bin已被选中
[信息@ 14-12-26 10:24:54]与COM14端口的连接已成功打开。
[INFO @14-12-26 10:24:54]已启动下载程序…
[动作@ 14-12-26 10:24:55]请按电路板上的硬件重置按钮开始下载过程。
[INFO @14-12-26 10:24:57]检测到复位
[INFO @ 14-12-26 10:25:09]将固件文件下载到电路板上失败。
对于这次失败,你能给点建议吗?另外,请告诉我在哪里可以获得更多的日志文件调试细节。
问候,
——三何
嗨fh_dialog,
同样如AN-B-001的第6.2节所示,当从UART模式启动时,DA14580-1通过P0_4,P0_5自动发送“0x02”到笔记本电脑/ PC。
但在我的设计中,我只看到“0x40”发送回来。我没有看到来自您的AN-B-001的这一十六进制数据的含义。
你能给我一些关于这条数据信息的建议吗?
问候
工作人员你好对话框。
我的DA14580模块在系统中设计为UART从站到Cortext M3 Master。
DA配置为按照(AN-B-001)的串行引导,P0_4&P0_5选择为UART RX / TX线,希望实现57.6波特。
我能够成功转换(使用hex2bin.exe和binforuart.py) Keil生成的sps_device。十六进制文件转换为C-Byte数组,并将其传输到DA14580,然后DA14580准确计算并返回下载的sps_device配置文件的预期crc。
在接收到预期的crc时,我用一个ACK(0x06)回复(按照an - b -001),这应该触发SYS_CTRL_REG的编程:
1.)重新映射到sysram(sys_ctrl_reg [remap_adr0] = 10)。
2)。应用一个SW复位,所以系统开始在重映射的地址(SYS_CTRL_REG[SW_RESET] = 10)处执行代码。
我已经遵循(AN-B-001)的字母,但似乎你的BootRom代码并没有使它通过最终引导阶段。
尽管已通过ACK(0x06)已确认返回CRC,但我仍然从模块中获取UTX行上的STX(0x02s)。
有人/任何人都可以帮助发光吗?
来自主机的最终ACK之后是否有特殊命令,让这件事启动?
谢谢
Mamadee诉Fofana
嗨mvfofana,
如果在引导过程结束后看到同一端口上的STX有可能使用设备重置并重新启动整个启动过程的可能性。只要将.bin文件下载到DA,您应该工作,没有其他命令,指示DA开始执行代码。您是否能够使用智能片段下载代码,可以比较智能片段与自定义引导顺序之间的事务。此外,您还可以通过JTAG下载辅助引导加载程序,并尝试通过UART启动代码类似于BootRom代码,也许这样您就会发现出现问题。
由于MT_dialog
我们遇到了类似的问题。在从DA中读取0x02之后,我们发送3个字节0x01和2个长字字节。但是,此后我们收到一个不等于ACK或NACK的字节。但有些其他价值。是什么让奇怪的是,现在是它的工作。此外,当我们从设备上取下电池并在很长时间将其放回后,似乎挂在循环中。它注意到,如果它失败,我们总是在我们发送前三个字节之后。
我们使用了带有DA芯片的Murata模块。是否该模块通过IO引脚供电比VCC稳定更早?
应该为0x06或0x15的字节似乎是0x60的很多值。
谢谢兄弟
嗨,路德,
至于你收到的不相关的字节(一个0x60代替或一个0x06或一个ox15),我认为这是一个0x06,在uart标准中最低有效位首先发送。必须发送这三个字节(0x01,LEN_LSB, LEN_MSB),因为它们定义了程序的长度。
启动过程取决于你对da施加的电压,因为bootrom会执行adc测量以获取电压水平,有时电压水平测量不正确,bootrom只执行一次,此外,如果那些IO引脚是UART引脚(涉及UART过程),结果在Vbat电压约1V ~ 1.5V,这阻止DA执行引导过程。
由于MT_dialog
我正在从串口(p0.4, p0.5)引导da14580。我们将逻辑分析器附加到串行端口,以确定在引导过程中发生了什么。最后,我们知道主机没有ack的CRC字节,然后启动da失败。主机应该发送ack给da,因为它被编程了。但是逻辑分析仪上没有ack。这可能是由于主机硬件故障或其他原因造成的。
我的问题是什么是确切的行为da14580如果没有ack到CRC字节收到。在几个ms等待和超时后,da是否重复启动顺序(发送0x02) ?或者有什么办法让主机知道这个失败,并试图再次启动da ?
有什么可以帮助解决这个问题吗?
嗨Shuaiwei阴,
ROM Bootloader搜索扫描UART端口,如果一个端口无法完成设备跳转到下一个可用端口的过程,则由于引导加载程序False ADC读取580在某些情况下不要重复引导代码,但它将以引导程序结束,它将留在可用的JTAG中以便从那里启动。没有指示特定端口的引导失败,设备只需扫描下一个接口即可。要重新启动引导加载程序,请再次从扫描中扫描,您可以从主机发出重置。如果CRC从580匹配计算的CRC,则最终ACK将从主机发送,如果它匹配,则580应该得到OK并继续启动,如果不是,则可以重置设备以重新运行Bootloader。
由于MT_dialog