[INFO SPI Flash @20-03-27 10:38:32] Firmware File C:\software\SmartSnippetsStdio\SmartSnippetsStudio\Toolbox\common_resources\flash_programmer.bin has been selected for downloading.
[INFO SPI Flash @20-03-27 10:38:32] Connection to COM20 port has successfully opened.
[INFO SPI Flash @20-03-27 10:38:32] Started download procedure...
[ACTION SPI Flash @20-03-27 10:38:33] Please press the hardware reset button on the board to start the download process.
[INFO SPI Flash @20-03-27 10:38:39] Reset detected
这是smartsnippets的log,就卡在reset detected,是我对flash误操作了,以下是我的flash操作代码,我按照SDK做的修改,代码中先执行user_read_data_from_flash读地址,再进行user_save_data_to_flash写
void user_read_data_from_flash(uint8_t* ptr, uint8_t size)
{
int8_t dev_id;
dev_id = spi_flash_enable (SPI_EN_GPIO_PORT SPI_EN_GPIO_PIN);
if (dev_id == SPI_FLASH_AUTO_DETECT_NOT_DETECTED)
{
// The device was not identified. The default parameters are used.
// Alternatively, an error can be asserted here.
spi_flash_init(SPI_FLASH_DEFAULT_SIZE, SPI_FLASH_DEFAULT_PAGE);
}
spi_cs_low();
spi_cs_high();
//save data
spi_flash_read_data(ptr,SPI_SAVE_BLOCK,size);
// Power down SPI Flash
spi_flash_power_down();
}
void user_save_data_to_flash(uint8_t* ptr, uint8_t size)
{
int8_t dev_id;
dev_id = spi_flash_enable (SPI_EN_GPIO_PORT SPI_EN_GPIO_PIN);
if (dev_id == SPI_FLASH_AUTO_DETECT_NOT_DETECTED)
{
// The device was not identified. The default parameters are used.
// Alternatively, an error can be asserted here.
spi_flash_init(SPI_FLASH_DEFAULT_SIZE, SPI_FLASH_DEFAULT_PAGE);
}
spi_cs_low();
spi_cs_high();
//save data
spi_flash_block_erase(SPI_SAVE_BLOCK, SECTOR_ERASE);
spi_flash_write_data(ptr, SPI_SAVE_BLOCK, size);
// Power down SPI Flash
spi_flash_power_down();
}
你好,
从 log 来看,ss toolbox 检测到 reset,准备通过串口,给 580 加载一个 flash_programmer.bin,然后进行 FLASH 操作。
以上为你点击了 connect 按钮之后的准备动作。
到这一步为止,是 580 的 boot 流程相关的,和用户固件无关。
请重新拔插开发板的 USB 线尝试。
你好
我这边尝试了更换USB口,还是出现一样的情况,卡在了reset detected中,这个问题的确是我在程序当中操作了FLASH之后出现的情况,我的ss toolbox版本为4.8.3,不知道和这个有没有关系呢
你好,
可以确定到了你 log 里的 reset 这一步,还不会涉及到对 FLASH 硬件的操作。
要到了 flash_programming.bin 烧录成功后,才会进行通讯而操作 FLASH。
JTAG 接口是否可以使用?
toolbox 里的 booter 工具是否可以使用?
580 是否烧录了 OTP ?
JTAG可以使用,BOOTER工具无法使用,和SPI_FLASH出现一样的情况,卡在RESET DETECTED后,过一会就主动disconneted form port,580没有烧入OTP
你好,
不好意思,我没问详细,
我说的 jtag 可以使用,是指,能通过 jtag 接口使用 booter 工具,能烧录 flash,能用 keil 调试,等。你指的是这样吗?
如果是,请将板上的 flash 拆除,然后再用 uart (P04 P05) 尝试。
以上测试,基于怀疑点:
因为 flash 的引脚 P05 和 uart 口的 P05 复用,怀疑 flash 的问题(P05 引脚异常)导致 uart 使用异常
JTAG能连接SS TOOLBOX,能用keil调试,无法利用JTAG进行booter工具烧写,和flash烧写,我是否需要将板子上的flash拆除利用uart尝试,另外,我有个自己的板子,是利用uart烧写的,跟开发板同样的情况,也是烧写了操作flash的代码后就不能连接SS了
你好,
基于你说的情况:
1. 可以使用 JTAG 进行 Keil 调试:排除芯片顺坏,焊接问题
2. ss toolbox 可以使用 JTAG 连接:排除 ss toolbox 使用 jtag 驱动的问题
3. ss toolbox 工具无法使用 booter,flashprogrammer 等工具:本质上,是无法给 580 boot 固件
我目前能想到的可能的情况是:你在选择芯片的时候可能选错了,580选择成了585。
若不是这个原因,请更换 toolbox 工具尝试,最新版本链接如下:
http://lpccs-docs.dialog-semiconductor.com/smartSnippets_studio/SmartSni...
非常感谢您的回复
我自己经过尝试已经解决了开发板不能下载的问题,先在KEIL下操作FLASH的代码屏蔽后,利用jtag口将代码debug进ram里,再打开SS进行烧入即可,FLASH操作失败的原因是我在初始化flash口的时候没有将TX RX的口进行屏蔽,从而造成了FLASH初始化失败。至于为什么对flash操作失败后不能下载这个问题,还是很奇怪哈
感谢分享调试结果。