引导加载程序主机错误: "The Flash Row is not Valid for the Selected Array" - KBA221445 (ZH)

Version: **

问题: 如何解决PSoC® 3, PSoC 4PSoC 5LP引导程序中PSoC bootloader主机中提示的错误"The flash row is not valid for the selected array" ?

答案:当引导加载程序主机尝试加载引导区域或写入受保护的内存部分时,将显示此错误。除非指定否则可引导应用程序从引导应用程序的下一个空闪存行开始存储。如果预编程引导加载程序在引导加载程序闪存区域或闪存行保护设置方面发生冲突,则不允许启动加载。

例如,考虑现场使用已编程引导加载程序的产品(称之为引导加载程序A)。假设您正在使用最新版本的PSoC创建器组件更新生成。让我们将更新的引导加载程序称为引导加载程序B。现在如果使用.hex.elf依赖项构建到Bootloader B的新引导加载,则在引导新应用程序时,可能会面临无效的闪存行错误。这可能是由于以下原因:

  1. 引导器B可能消耗较少的闪存行,但预编程的引导加载程序A占用更多的闪存行。因此,新的.cyacd文件正在尝试引导加载预编程的引导加载程序行,这是不允许的。
  2. Booltoader B使用的实际行数相比, Booloader A更多行可能已被"写入保护"。在这种情况下,新的.cyacd文件正在尝试引导受保护的行。

请注意,即使引导加载程序B设置为依赖项,引导加载程序B中的任何功能修改(A相比)也不会反映在实际应用程序中。这是引导加载程序B未重新编程到设备。

1: PSoC Creator创建工程的闪存使用情况

  

要解决此问题,您可以手动将可引导加载的应用程序放在引导加载器映像上方和闪存元数据区域上方的任何闪存行, 1所示。此方法可用于避免依赖项文件的旧/较新版本与存在闪存行保护设置之间的闪存消耗差异。步骤如下:

  1. "可启动加载配置设置(配置对话框)" ,启用 "Manual application image placement" 选项。除非启用否则 "Placement address" 选项将显示灰显。参见2
  2. "Placement address" 字段中指定地址,以便地址位于设备上的引导加载程序映像上方和元数据区域下方。要确定放置地址,请添加设备的闪存行号和闪存行大小以及闪存基地址。确保放置地址与闪存行大小对齐。有关闪存组织的详细信息,请参阅系统参考指南的闪Flash and EEPROM章节。

 

2: 可引导加载配置中的手动应用程序放置选项

 

参考文档:

Bootloader and Bootloadable

AN73854 - PSoC® 3, PSoC 4, and PSoC 5LP Introduction to Bootloaders

PSoC® 3, PSoC 4, and PSoC 5LP Flash Memory Organization and Array ID Parameter - KBA84740