https://gaomf.cn/2016/06/23/Nor%20Flash中的啟動扇區(Boot%20Sector,%20Boot%20Block)/
在Nor Flash中,有個啟動扇區(Boot Sector,有時也被稱為啟動塊)的概念,這個概念應該是只針對Nor Flash的,因為Nand Flash無法直接尋址,故Nand Flash中是沒有Boot Sector的。
一個Nor Flash一般被分為若干塊(Block)或若干扇區(Sector),這應該只是不同廠家用的名字不同,並不存在一個Block中包含若干Sector的說法。這些扇區的大小一般並不相同,通常情況下會配置為大量大容量扇區加上少量小容量扇區的結構,這些小扇區就被稱之為啟動扇區。
這樣設計是考慮到小容量扇區的擦寫速度比較快,而且一般可以對其進行寫保護,故可用其存放Bootloader及其他一些用戶配置數據。實際上可以有多個小扇區,這些小扇區中具體哪一個是啟動扇區,還是都是啟動扇區,這一問題並沒有明確的說法,也無需糾結於此。
根據啟動扇區的地址不同,可分為兩大類:Top Boot & Bottom Boot。Top Boot是指Boot Sector位於最高地址處;Bottom Boot是指Boot Sector位於最低地址處,一般同一型號的Nor Flash都會同時提供這兩個版本,除了地址分配的差異外,其它的主要參數二者應該完全相同。
一張比較清晰的對比圖如下:

下面以AMD公司的Am29LV160D為例來具體看看這個問題。
Am29LV160D可配置為2M * 8-Bit或1M * 16-Bit,這個是通過一個引腳電平來確定的,下面僅討論1M * 16-Bit的配置。在此配置下,Am29LV160D被分為35個扇區:
- 1個8Kword扇區
- 2個4Kwork扇區
- 1個16Kword扇區
- 31個32Kword扇區
這些扇區中,前面那4個扇區就是Boot Sector。AMD公司同時提供了Top Boot和Bottom Boot兩種芯片,見下圖:

對於Top Boot的器件來說,其扇區分配如下:

可以看到,其中小容量扇區被安排到了最高地址處,即最后幾個扇區。
對於Bottom Boot的器件來說,其扇區分配如下:

可以看到,其中小容量扇區被安排到了最低地址處,即最前幾個扇區。
不過實際上,像U-Boot這類Bootloader的體積一般都會超過100KByte的,此時顯然無法只用啟動扇區保存,所以說這時候啟動扇區就僅僅只是個名字,使用時也無需特別關注的。不過Top Boot和Bottom Boot器件的器件ID等可能會有所區別,使用時需要注意一下。
