[U-Boot-Users] AM29LV160DT (top boot block and CFI)

Hello.
I'm using the AM29LV160DT (top boot block) with the u-boot CFI flash driver. It seems that U-boot thinks this is a bottom boot block device:
flinfo:
Bank # 1: CFI conformant FLASH (16 x 16) Size: 2 MB in 35 Sectors Erase timeout 16384 ms, write timeout 0 ms, buffer write timeout 1 ms, buffer size 1 Sector Start Addresses: B8000000 B8004000 B8006000 B8008000 B8010000 B8020000 B8030000 B8040000 B8050000 B8060000 B8070000 B8080000 B8090000 B80A0000 B80B0000 B80C0000 B80D0000 B80E0000 B80F0000 B8100000 B8110000 B8120000 B8130000 B8140000 B8150000 B8160000 B8170000 B8180000 B8190000 B81A0000 B81B0000 B81C0000 B81D0000 B81E0000 B81F0000
Note the boot sectors are appearing at the bottom of the device instead of the top.
There is a note in the CFI specification that states:
1. Erase Blocks always start at address 0 of the Bottom Boot or Uniform Low Version of the Flash Device
So I assume, the CFI information in the device is correct and it must be swapped if you have a top boot block device. If this is true, the sector information needs to be reversed after the device is scanned. Unfortunately, the CFI data for this device does not include top/bottom boot info. The only other information I have found to key off of is the device ID.
Has anyone else run into this problem and is there a better solution than keying off the device ID and then reversing the sector info?
Thanks, Cliff
-- ======================= Cliff Brake http://bec-systems.com

Cliff Brake writes:
Cliff> Hello. I'm using the AM29LV160DT (top boot block) with the Cliff> u-boot CFI flash driver. It seems that U-boot thinks this is Cliff> a bottom boot block device:
Cliff> flinfo:
Cliff> Bank # 1: CFI conformant FLASH (16 x 16) Size: 2 MB in 35 Cliff> Sectors Cliff> Erase timeout 16384 ms, write timeout 0 ms, buffer write Cliff> timeout 1 ms, buffer size 1 Cliff> Sector Start Addresses: Cliff> B8000000 B8004000 B8006000 B8008000 B8010000 B8020000 Cliff> B8030000 B8040000 B8050000 B8060000 B8070000 B8080000 Cliff> B8090000 B80A0000 B80B0000 B80C0000 B80D0000 B80E0000 Cliff> B80F0000 B8100000 B8110000 B8120000 B8130000 B8140000 Cliff> B8150000 B8160000 B8170000 B8180000 B8190000 B81A0000 Cliff> B81B0000 B81C0000 B81D0000 B81E0000 B81F0000
Cliff> Note the boot sectors are appearing at the bottom of the Cliff> device instead of the top.
Cliff> There is a note in the CFI specification that states:
Cliff> 1. Erase Blocks always start at address 0 of the Bottom Boot Cliff> or Uniform Low Version of the Flash Device
Cliff> So I assume, the CFI information in the device is correct and Cliff> it must be swapped if you have a top boot block device. If Cliff> this is true, the sector information needs to be reversed Cliff> after the device is scanned. Unfortunately, the CFI data for Cliff> this device does not include top/bottom boot info. The only Cliff> other information I have found to key off of is the device Cliff> ID.
Cliff> Has anyone else run into this problem and is there a better Cliff> solution than keying off the device ID and then reversing the Cliff> sector info?
I think this is exactly the special case of AM29LV160 chips which is even mentioned in CFI documents (see CFI Publication 100). Four versions of CFI query table format exist (1.0 to 1.3), and 1.0 does not include top/bottom boot info. Almost no chip uses this format, probably only AM29LV160 series uses it. So for these chips you have to check the device ID. I think that the proper algorithm would be checking the CFI table version and, in the case of 1.0, check additionally the device ID.
participants (2)
-
Cliff Brake
-
Yuli Barcohen