作者:JOHNSON CHEN

在使用C2000Tm MCU产品的时候,有可能会碰到仿真器连上目标板以后报“flash is not available on this device”,详细报错信息如下,而事实上芯片本身是有Flash的。

C28xx_CPU1: GEL Output:

RAM initialization done

C28xx_CPU1: GEL Output:

Memory Map Initialization Complete

C28xx_CPU1: GEL Output: ... DCSM Initialization Start ...

C28xx_CPU1: GEL Output: ... DCSM Initialization Done ...

C28xx_CPU1: Error initializing flash programming: Interface returned from dll, but flash is not available on this device.

 

这时针对芯片Flash的所有操作(擦除,编程,校验,读取)都会报图一所示错误。

图一

出现这种情况的原因可能是芯片Flash的代码不完整或者有错误,导致CPU工作不正常。虽然能连上仿真器,但仿真器读取到的芯片信息可能会出错,从而导致上面的报错。

如果没有有效办法去解决这个错误,则针对芯片Flash的所有操作都无效,只有换芯片才能让板子正常工作。

 

本文将以C2000 F28002x系列及CCS11为例,介绍针对“flash is not available on this device”问题的两种解决方案。其它C2000系列芯片如F28003x/F28004x/F2837x/F2838x遇到这个问题,也可以使用本文方法来解决。

 

方法一:更改引导模式。

 

如图二所示,将引导模式管脚跳线为Wait Boot Mode, 这样上电时CPU会停留在芯片内部自带的BOOT ROM区,而不会进入到用户自己的Flash代码。

图二

这时连上仿真器,可以正常读取芯片信息,不会报之前的错误,接下来如图三所示,我们通过“ToolsàOn-Chip Flash”,在“Erase Settings”里面选择“Entire Flash”,然后点击“Erase Flash”把芯片整个Flash 擦除掉,此时芯片将变成空片。

图三

方法二:更改XML文件。

 

第一步:生成CCS logs 文件。

1a. 如图四所示,点击 “Help”,然后选择 “CCS Support”。

图四

1b. 如图五所示,选择“Debug Server Log”,然后点击“Properties”。

图五

1c. 如图六所示,勾上“Enable Debug Server Logging”,然后选择存储log 文件路径并命名,例如命名为test.log,然后点击OK。

图六

1d.启动CCS 仿真, 这时将生成log文件。

1f.用CCS 或者文本编辑器打开log 文件,如图七所示,查找Device ID, 把这个ID 号记下来,如(0x771923)。

图七

第二步:更改xml 文件。

2a. 在下面路径下找到TMS320F28002x.xml 文件。建议先备份好这个文件,后面需要用到这个备份文件。

C:\ti\ccs1100\ccs\ccs_base\c2000\nowFlash\configs

2b.用文本编辑器或者CCS打开TMS320F28002x.xml文件, 如图八所示,查找DeviceId,,将1f步骤里面记录下来的Device ID 号替换TMS320F28002x.xml文件里的DeviceId值。也就是将0x771973改成0x771923。然后保存更改并关闭CCS(记得一定要关闭CCS,因为xml更改只有在下一次CCS启动时才会生效)。

图八

第三步:启动CCS,进入仿真界面。

这时CCS不再报之前的错误, Flash 可以正常操作了。接下来我们通过“ToolsàOn-Chip Flash”,在“Erase Settings”里面选择“Entire Flash”,然后点击“Erase Flash”把芯片整个FLASH 擦除掉,此时芯片将变成空片。

第四步:恢复xml 文件。

可以将2a步骤里备份的TMS320F28002x.xml文件恢复,或者把现有TMS320F28002x.xml 里的DeviceId 从0x771923改回0x771973。

至此,芯片已经可以正常操作Flash 了, 问题得到解决。相比第一种方法,第二种方法的好处在于不需要硬件跳线, 对于客户实际操作来说会更加便捷。另外,如果第一种方法无效的话,也可以尝试第二种方法。

Anonymous