闪光定制QSPI - winbond w25q32fw

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
8个职位/ 0个新职位
最后发表
马丁·托马
离线
最后看到:3年8个月前
加入:2017-02-23 14:34
闪光定制QSPI - winbond w25q32fw

你好,
我有一个自定义板与winbond“w25q32fw”,并想在qspi上闪光pxp_roporter演示。
不幸的是,到目前为止没有成功。我目前所做的:
1.为flash添加了一个新的头文件:DA1468x_SDK_BTLE_v_1.0.8.1050.1\sdk\bsp\memory\include\qspi_w25q32fw.h
的ifndef _QSPI_W25Q32FW_H_
#定义_QSPI_W25Q32FW_H_

的ifndef WINBOND_ID
#定义xef WINBOND_ID 0
# endif

//设备类型使用命令0x9F
#定义x60 W25Q32FW 0

的ifndef W25Q_32Mb_SIZE
#定义W25Q_32Mb_SIZE 0 x16时
# endif

#if (FLASH_AUTODETECT == 1) || (dg_configFLASH_MANUFACTURER_ID == WINBOND_ID && \
dg_configFLASH_DEVICE_TYPE == W25Q32FW && dg_configFLASH_DENSITY == W25Q_32Mb_SIZE)

# include“qspi_common.h”

# include“qspi_winbond.h”

Static void flash_w25q32fw_sys_clock_cfg(sys_clk_t sys_clk);
静态uint8_t flash_w25q32fw_get_dummy_bytes(无效);

Static const qspi_flash_config_t flash_w25q32fw_config = {
.manufacturer_id = WINBOND_ID,
.device_type = W25Q32FW,
.device_density = W25Q_32Mb_SIZE,
.is_suspended = flash_w25q_is_suspended,
.initialize = flash_w25q_initialize,
.deactivate_command_entry_mode = flash_w25q_deactivate_command_entry_mode,
.sys_clk_cfg = flash_w25q32fw_sys_clock_cfg,
.get_dummy_bytes = flash_w25q32fw_get_dummy_bytes,
.break_seq_size = HW_QSPI_BREAK_SEQ_SIZE_1B,
.address_size = HW_QSPI_ADDR_SIZE_24,
.page_program_opcode = CMD_QUAD_PAGE_PROGRAM,
.quad_page_program_address = true,
.erase_opcode = CMD_SECTOR_ERASE,
.erase_suspend_opcode = W25Q_ERASE_PROGRAM_SUSPEND,
.erase_resume_opcode = W25Q_ERASE_PROGRAM_RESUME,
.read_erase_progress_opcode = CMD_READ_STATUS_REGISTER,
.erase_in_progress_bit = FLASH_STATUS_BUSY_BIT,
.erase_in_progress_bit_high_level = true,
.send_once = 1,
.extra_byte = 0 xa0,
.ucode_wakeup = {w25q_ucode_wakeup, sizeof(w25q_ucode_wakeup)}
.power_down_delay = W25Q_POWER_DOWN_DELAY_US,
.release_power_down_delay = W25Q_RELEASE_POWER_DOWN_DELAY_US,
};

#if (FLASH_AUTODETECT == 0)
Const qspi_flash_config_t* Const flash_config = &flash_w25q32fw_config;
# endif

QSPI_SECTION static void flash_w25q32fw_sys_clock_cfg(sys_clk_t sys_clk)

QSPI_SECTION static uint8_t flash_w25q32fw_get_dummy_bytes(void)

返回2;

# endif
#endif /* _QSPI_W25Q32FW_H_ */ . #endif /* _QSPI_W25Q32FW_H_ */
/**
* \}
* \}
* \}
*/
2.修改DA1468x_SDK_BTLE_v_1.0.8.1050.1 \ sdk \ bsp \ \装载机\ uartboot \ config \ custom_config.h系统

#定义dg_configFLASH_CONNECTED_TO (FLASH_CONNECTED_TO_1V8)
#定义dg_configFLASH_POWER_DOWN (0)
#定义dg_configFLASH_AUTODETECT (0)
#定义dg_configPOWER_1V8_ACTIVE (1)
#定义dg_configPOWER_1V8_SLEEP (1)
#定义dg_configUSE_AUTO_CHIP_DETECTION (1)
#定义dg_configPOWER_1V8P (1)

# include“bsp_definitions.h”

#定义OS_BAREMETAL

#定义__HEAP_SIZE 0 x2000

#定义dg_configUSE_LP_CLK LP_CLK_32768
#定义dg_configCODE_LOCATION NON_VOLATILE_IS_FLASH
#定义dg_configEXT_CRYSTAL_FREQ EXT_CRYSTAL_IS_16M

#定义dg_configIMAGE_SETUP DEVELOPMENT_MODE
#定义dg_configEMULATE_OTP_COPY (0)

#定义dg_configUSER_CAN_USE_TIMER1 (1)

#定义dg_configMEM_RETENTION_MODE (0 x1f)
#定义dg_configSHUFFLING_MODE段(0 x3)

#定义dg_configUSE_WDOG (0)
#定义dg_configUSE_BOD (0)

#定义dg_configUSE_DCDC (1)

#定义dg_configFLASH_CONNECTED_TO (FLASH_CONNECTED_TO_1V8)
#定义dg_configFLASH_POWER_DOWN (0)
#定义dg_configFLASH_AUTODETECT (0)

#定义dg_configPOWER_1V8_ACTIVE (1)
#定义dg_configPOWER_1V8_SLEEP (1)

#定义dg_configBATTERY_TYPE (BATTERY_TYPE_LIMN2O4)
#define dg_configBATTERY_CHARGE_CURRENT 2 // 30mA
#define dg_configBATTERY_PRECHARGE_CURRENT 20 // 2.1mA
#define dg_configBATTERY_CHARGE_NTC 1 //禁用

#定义dg_configUSE_USB 0
#定义dg_configUSE_USB_CHARGER 0
#定义dg_configALLOW_CHARGING_NOT_ENUM 1

#定义dg_configUSE_ProDK (1)

#定义dg_configUSE_SW_CURSOR (1)
#定义dg_configUSE_HW_RF 0

#定义dg_configUSE_AUTO_CHIP_DETECTION (1)

#定义dg_configPOWER_1V8P (1)

#定义dg_configDISABLE_BACKGROUND_FLASH_OPS (1)

#定义dg_configCRYPTO_ADAPTER (0)

#定义dg_configUSE_HW_WKUP (0)

#定义dg_configSUPPRESS_HelloMsg (0)

#定义dg_configVERIFY_QSPI_WRITE (1)

#定义dg_configFLASH_ADAPTER (1)
#定义dg_configNVMS_ADAPTER (1)
#定义dg_configNVMS_VES (1)

#定义dg_configFLASH_HEADER_FILE“qspi_w25q32fw.h”
#定义dg_configFLASH_MANUFACTURER_ID WINBOND_ID
#定义dg_configFLASH_DEVICE_TYPE W25Q32FW
#定义dg_configFLASH_DENSITY W25Q_32Mb_SIZE
#定义dg_configFLASH_MAX_WRITE_SIZE (256)

3.编译DiaSemi \ DA1468x_SDK_BTLE_v_1.0.8.1050.1 \ sdk \ bsp \ \装入器\ uartboot系统
4.Flash uartboot.bin with cli_programmer via serial

cli_programmer 1.23
版权所有(c) 2016 Dialog雷竞技电竞平台 Semiconductor

使用COM18串口,波特率为57600。
按下复位。
上传引导加载程序/应用程序可执行文件…
可执行文件上传。
完成了。

但是当我试图flash的pxp_reporter演示或试图擦除flash时,我总是得到以下错误:

使用COM18串口,波特率为57600。
未指定引导程序文件,使用内部uartboot.bin

连接到设备……
设置串口波特率为57600。
按下复位。
上传引导加载程序/应用程序可执行文件…
可执行文件上传。
设置串口波特率为57600。
chip erase QSPI failed: invalid announcement message received (-106)

因为这是我第一次编程da14681,如果你有一个提示,我真的会很好-什么可能是错误的!

非常感谢!
来自德国斯图加特的问候
马丁

设备:
MT_dialog
离线
最后看到:4个月1天前
工作人员
加入:2015-06-08 34
嗨,马丁•托马

嗨,马丁•托马

关于uartboot.bin中的修改,uartboot.bin的原始custom_config.h文件的dg_configFLASH_AUTODETECT为1,因为在代码中包含额外的闪光没有问题。因此,您可以将dg_configFLASH_AUTODETECT设置为1,并在FLASH_AUTODETECT定义下的qspi_automode.c中包含新的flash头文件和qspi_flash_config_t。这将允许你有一个uartboot.bin为所有可用的闪光。

假设新支持的flash的所有信息都是正确的,并且显然您已经构建了新的uartboot.bin来支持新flash,问题是脚本使用cli_programmer来与68x交互,cli_programmer嵌入了uartboot.bin的一个版本,这个版本显然不支持新的flash(因为您还没有更新它)。因此,您需要做的是构建lib_programmer和cli_programmer,以便cli_programmer包含新创建的支持额外flash设备的uartboot.bin。尽管如果您构建cli_programmer,它会自动首先构建lib_programmer,然后是uartboot,最后是cli_programmer。

由于MT_dialog

马丁·托马
离线
最后看到:3年8个月前
加入:2017-02-23 14:34
嗨MT_dialog,

嗨MT_dialog,
谢谢你的回复。我在显示qspi时仍然有问题。我再次构建了uartboot.bin、lib和cli,但没有成功地闪烁qspi。让我好奇的是:

使用COM18串口,波特率为57600。
未指定引导程序文件,使用内部uartboot.bin

对我来说,似乎我必须配置到“new”uartboot.bin的路径。将cli Release文件夹中的“uartboot.bin”重命名为“uartboot2.bin”不会显示任何错误,但与“未指定bootloader”之前的消息相同。设置路径可以在不存在的“cli_programer .ini”中完成。那么,当我想在smartsnippets studio中使用“program_qspi_serial_win”脚本时,我必须在哪里修改uartboot.bin的路径?

当用-b命令从终端刷新第二个引导加载程序时,脚本会使用这个引导加载程序吗?

非常感谢你的进一步提示。

最好的问候,
马丁

MT_dialog
离线
最后看到:4个月1天前
工作人员
加入:2015-06-08 34
嗨,马丁•托马

嗨,马丁•托马

如上所述,cli_programmer.exe包含uartboot.bin的一个版本(当您构建cli时,它是通过uartboot.bin文件构建的,这就是为什么当您构建cli时,eclipse首先构建lib_programmer,然后构建uartboot.bin,最后构建cli_programmer)。出现的消息并提到“bootloader file not specified”指的是cli_programmer的选项,通过命令行提供uartboot.bin,如果你不提供一个命令,命令使用构建的文件。脚本使用的cli_programmer.exe位于SDK的二进制文件文件夹,为了检查这个为自己可以从二进制文件中删除这个文件文件夹和重建cli_programmer项目,如果你新建立的sw将自动被复制并放置在二进制文件文件夹中,eclipse使用,所以你不必使用-b选项。

我正在检查,如果我可以得到一个闪光,就像你正在使用,以检查。

由于MT_dialog

马丁·托马
离线
最后看到:3年8个月前
加入:2017-02-23 14:34
嗨MT_dialog,

嗨MT_dialog,
非常感谢您的支持!
“我在检查我是否可以得到一个闪光灯,就像你正在使用的,以检查”
这真是太棒了!
在引导加载程序文件中还有什么需要更改的吗?我已经添加了新的驱动程序(也是在qspi_automode.c中),并保留dg_configFLASH_AUTODETECT 1。
我想我必须使用调试器。仅使用uart似乎是无效的。
也许我在做一些根本性的错误。只是为了验证我的uartboot.bin在ram上运行,我尝试设置

#定义dg_configFLASH_CONNECTED_TO (FLASH_IS_NOT_CONNECTED)
#定义dg_configFLASH_POWER_DOWN (0)
#定义dg_configFLASH_AUTODETECT (0)

#定义dg_configPOWER_1V8_ACTIVE (0)
#定义dg_configPOWER_1V8_SLEEP (0)
#定义dg_configPOWER_1V8P (0)

然后执行例如erase_qspi_serial_win脚本。但我仍然可以测量1.8V (A8 / aQFN包)。我认为新的uartboot.bin应该在ram中运行,并将A8上的pwr输出设置为gnd?

最好的问候,
马丁

MT_dialog
离线
最后看到:4个月1天前
工作人员
加入:2015-06-08 34
嗨,马丁•托马

嗨,马丁•托马

我能够找到一个flash像你,和我能够消除程序通过JTAG,我也能够通过串行程序它,最重要的是我能够这样做,而无需改变自定义华邦电子驱动程序。我遇到的唯一问题是,我不能擦除的flash使用串行的一些原因,所以我相信,即使与一个未改变的SDK,你将能够使用那个flash。我也尝试了修改,你已经粘贴在线显然你设置了quad_page_program_address =真,这是一个问题,设置它为假,它似乎是工作。对于通过串行的擦除,似乎这是cli的时间问题,因为就我所知,即使脚本提到擦除已失败,闪存被擦除。

由于MT_dialog

马丁·托马
离线
最后看到:3年8个月前
加入:2017-02-23 14:34
嗨MT_dialog,

嗨MT_dialog,
非常感谢你的支持。但是我仍然得到“收到无效公告消息(-106)”
当构建libprogrammer时,我得到以下消息:

23:34:37 **** libprogrammer ****的配置Release_static_win32的增量构建
配置“Release_static_win32”使用的工具链“MinGW GCC”是不支持的系统,试图构建无论如何。
使——沉默

23:34:37 Build Finished(耗时285ms)

这可能是问题所在吗?
最好的问候,
马丁

MT_dialog
离线
最后看到:4个月1天前
工作人员
加入:2015-06-08 34
嗨,马丁•托马

嗨,马丁•托马

不,它不应该引起你任何问题,就像我提到的,我能够编程设备,甚至与默认的驱动程序与默认的flash,你有没有尝试过,而且,你有没有尝试通过JTAG与flash接口,而不是通过UART。另外,如果你使用SDK 1.0.10,请注意,当构建cli_programmer时将不会更新二进制文件夹,所以你将不得不将新的.exe(新编译的一个)放在SDK的二进制文件夹中。

由于MT_dialog