SPI NOR 启动
对于 SPI NOR 设备,预留两个的启动分区,用于保存第一级引导程序,每个分区大小 128 KB。 启动时, BROM 首先尝试从第一个分区读取启动镜像,如果检验失败则尝试从第二个分区读取启动镜像。如果都失败,则从该设备启动失败。
| 区域 | 大小位置 |
|---|---|
| Partition0 | 256 KB (0~256 KB) |
| Partition1 | 256 KB (256 KB~512 KB) |
| …… | …… |

Partition1 并不是必须的,方案可根据实际情况安排该区域的用途。
兼容性处理
BROM 阶段,从 SPI NOR 启动时,使用下列参数:
| 线宽 | 1 线 | QUAD SPI 的读命令,各家要求不尽相同 |
| 读命令 | 03h | 03h 命令是所有厂家都支持的命令 |
| 频率 | 24 MHz | 为了稳定可靠 |
4-Byte-Address Mode 的支持
对于容量大小为 16 MB 及以下的 SPI NOR,访问时通常使用 3-Byte-Address Mode,但对于 16 MB 以上的 Flash 需要使用 4-Byte-Address Mode 才可以访问到 16 MB 以上的存储空间。SPI NOR 可以设置上电即进入 4-Byte-Address Mode, 如果 SPINOR 颗粒做了上述设置,BROM 需要按照该模式访问数据,才可以正确读取。
对于 BROM 而言,4-Byte-Address Mode 的挑战在于不同品牌的 SPI NOR 在如何进入、退出 4-Byte-Address Mode 上的做法不一致,有些是可以设置进入 4-Byte-Address Mode,并且断电后保持,即上电即为 4-Byte-Address Mode, 但是判断当前是否在 4-Byte-Address Mode 的方法又不统一,因此无法通过 SPI NOR 的相关命令判断当前是否在 4-Byte-Address Mode。
当前的处理方法为:
首先按照 3-Byte-Address Mode 尝试读取启动镜像
如果失败,则按照 4-Byte-Address Mode 尝试读取启动镜像
本芯片 BROM 不支持 Dataflash 启动。Dataflash 是一种特殊的 SPI NOR Flash, 其每个 Page 的大小为 264 或者 528,并且 Page 之间的地址不连续,常用于保存数据。
BROM 阶段,从 SPI NOR 启动过程中,没有使用 XIP 功能。
