10 posts / 0 new
Last post
GGQ_in
Offline
Last seen:1 month 3 days ago
加入:2019-07-23 04:41
SPI FLASH 烧写问题

你好,我用DA14580和GD25D10C flash烧写 OTA.bin文件,当烧写完复位后蓝牙没广播,当我烧写完复位后,再DEBUG二次引导文件蓝牙才从运行了我烧写的程序(开始广播),文件夹中是二次引导和flsh_programmer工程中的部分调试截图。请问这种情况是二次引导文件烧写问题还是flsh_programmer工程的问题?

附件:
Device:
CYibin
Offline
Last seen:2 months 1 week ago
工作人员
加入:2017-12-14 02:48
你好,

你好,

能否再描述清楚你的目的?

用 580 做烧录器?还是想对 580 烧录 FLASH?

GGQ_in
Offline
Last seen:1 month 3 days ago
加入:2019-07-23 04:41
你好, 是想对580烧录flash

你好,

是想对580烧录flash

CYibin
Offline
Last seen:2 months 1 week ago
工作人员
加入:2017-12-14 02:48
你好,

你好,

关于这个问题,你有几个帖子,我们集中在这里讨论吧。

你是在用 make image 工具,生成 multi bin 文件的时候遇到问题了吗?

如果是,需要检查:

1. FLASH 0 地址处(包含 70 50 头),或者 OTP 中(不包含 70 50 头),有 secondary bootloader 代码

2. 0x8000 处有 70 51 和 image 1

3. 0x13000 处有 70 51 和 image 2

4. 0x1F000 处有 70 52 header,并且 header 中有 0x8000 0x13000 数据

580 芯片建议在 OTP 中烧录 secondary bootloader

GGQ_in
Offline
Last seen:1 month 3 days ago
加入:2019-07-23 04:41
你好,

你好,

我在生成 multi bin 文件的时候没有出现错误。0x8000 、0x13000和 0x1F000这三个的地址都能读到相应imge和header信息,DEBUG调试second_bootloader读取 FLASH 0 地址时就卡在那里了似乎一直在等待,以下为读取读取Flash 0 时的片段代码。 当我用SmartSnippets读取ADDRESS 0 处是有70 50 信息的。

我现在用的是580的芯片和另外的FLASH芯片,spi引脚和默认的spi启动引脚不同。OTP中烧录secondary bootloader 代码是往FLASH 0 处写secondary bootloader?那我在生成 multi bin 文件的时候就把secondary bootloader放在地址0了就可以了吗?

uint8 AN001Header[AN001_SPI_HEADER_SIZE]; SpiFlashRead((unsigned long)AN001Header, (unsigned long) 0, (unsigned long)AN001Header); if (AN001Header[0]==0x70 && AN001Header[1]==0x50) {}

谢谢!

CYibin
Offline
Last seen:2 months 1 week ago
工作人员
加入:2017-12-14 02:48
你好,

你好,

是的,在生成 multibin 的时候,要将 secondary bootloader 烧到地址 0 FLASH、 70 50 header 之后

GGQ_in
Offline
Last seen:1 month 3 days ago
加入:2019-07-23 04:41
你好, 这个步骤我有

你好,

这个步骤我有

E:\code\ota_file>hex2bin -e bin nodata_salve.hex hex2bin v1.0.10, Copyright (C) 2012 Jacques Pelletier & contributors Lowest address = 00000000 Highest address = 0000732B Pad Byte = FF 8-bit Checksum = 2F E:\code\ota_file>mkimage single first01_version.h nodata_salve.bin nodata_salve.img E:\code\ota_file>mkimage multi spi gsecondary_bootloader.bin nodata_salve.img 0x8000 nodata_salve.img 0x13000 0x1f000 nodata_salve_ota.bin Creating image 'nodata_salve_ota.bin'... [00000000] AN-B-001 SPI header [00000008] Bootloader [000012b0] Padding (FF's) [00008000] 'nodata_salve.img' [000080df] Padding (FF's) [00013000] 'nodata_salve.img' [000130df] Padding (FF's) [0001f000] Product header

CYibin
Offline
Last seen:2 months 1 week ago
工作人员
加入:2017-12-14 02:48
你好,

你好,

抱歉之前没看清你的一个情况:“spi flash 引脚和默认的不同”

在这种情况下,你必须修改 secondary bootloader 来对你的 flash 引脚进行适配;并且需要把 secondary bootloader 烧录到你的 OTP 中。

上电经历的流程应该是:
1. 芯片硬件初始化

2. 芯片 ROM boot 运行,发现 OTP 中有代码(secondary bootloader),将其拷贝到 RAM 中运行

3. secondary bootloader 读取 product header,获取 image 1/2 的 image header 的地址

4. secondary bootloader 决定拷贝 image 1,从 image 1 header 中获取到 image 的相关信息,如 image size

5. secondary bootloader 将 image 1 拷贝到 RAM 中并运行

GGQ_in
Offline
Last seen:1 month 3 days ago
加入:2019-07-23 04:41
你好,

你好,

我已经修改了FLASH引脚,也把secondary bootloader放在了FLASH 0 , 这次的secondary bootloader烧录到 OTP 中是烧录到otp image 里面吗?

还有我想请问, 蓝牙的时钟晶振引脚排线错误会影响蓝牙的广播吗,比如广播地址会发生错误?

谢谢!

CYibin
Offline
Last seen:2 months 1 week ago
工作人员
加入:2017-12-14 02:48
你好,

你好,

是的,secondary boot 烧录到 OTP image 区域。

广播地址错误,具体是指什么?晶振异常会到导致无广播或连接不稳定