-   Linux - Embedded & Single-board computer (
-   -   What is the meaning of 32 bits x 16 bits in a flash memory? (

archieval 05-17-2011 10:10 PM

What is the meaning of 32 bits x 16 bits in a flash memory?
Hello everyone,

I have been working on a uboot, and when I typed flinfo, this one shows up. I would like to know what is the meaning of that "32 bits x 16 bits"? Are they supposed to be multiplied to get something? 32 * 16 = 512 what? I would like to know what is the meaning of this part so that I can look it up in the flash memory datasheet and further understand the uboot flash code.


Bank # 1: INTEL 28F256P30B CFI conformant FLASH (32 bits x 16 bits)
  Size: 64 MB in 259 Sectors
  Erase timeout: 4096 ms
  Write timeout: 1024 us
  Buffer write timeout: 4096 us
  Buffer size: 2048

  Sector Start Addresses:
 E8000000 (RO) E8010000 (RO) E8020000 (RO) E8030000 (RO) E8040000 (RO)
 E8080000      E80C0000      E8100000      E8140000      E8180000
 E81C0000      E8200000      E8240000      E8280000      E82C0000
 E8300000      E8340000      E8380000      E83C0000      E8400000
 E8440000      E8480000      E84C0000      E8500000      E8540000
 E8580000      E85C0000      E8600000      E8640000      E8680000
 E86C0000      E8700000      E8740000      E8780000      E87C0000
 E8800000      E8840000      E8880000      E88C0000      E8900000
 E8940000      E8980000      E89C0000      E8A00000      E8A40000
 E8A80000      E8AC0000      E8B00000      E8B40000      E8B80000
 E8BC0000      E8C00000      E8C40000      E8C80000      E8CC0000
 E8D00000      E8D40000      E8D80000      E8DC0000      E8E00000
 E8E40000      E8E80000      E8EC0000      E8F00000      E8F40000
 E8F80000      E8FC0000      E9000000      E9040000      E9080000
 E90C0000      E9100000      E9140000      E9180000      E91C0000
 E9200000      E9240000      E9280000      E92C0000      E9300000
 E9340000      E9380000      E93C0000      E9400000      E9440000
 E9480000      E94C0000      E9500000      E9540000      E9580000
 E95C0000      E9600000      E9640000      E9680000      E96C0000
 E9700000      E9740000      E9780000      E97C0000      E9800000
 E9840000      E9880000      E98C0000      E9900000      E9940000
 E9980000      E99C0000      E9A00000      E9A40000      E9A80000
 E9AC0000      E9B00000      E9B40000      E9B80000      E9BC0000
 E9C00000      E9C40000      E9C80000      E9CC0000      E9D00000
 E9D40000      E9D80000      E9DC0000      E9E00000      E9E40000
 E9E80000      E9EC0000      E9F00000      E9F40000      E9F80000
 E9FC0000      EA000000      EA040000      EA080000      EA0C0000
 EA100000      EA140000      EA180000      EA1C0000      EA200000
 EA240000      EA280000      EA2C0000      EA300000      EA340000
 EA380000      EA3C0000      EA400000      EA440000      EA480000
 EA4C0000      EA500000      EA540000      EA580000      EA5C0000
 EA600000      EA640000      EA680000      EA6C0000      EA700000
 EA740000      EA780000      EA7C0000      EA800000      EA840000
 EA880000      EA8C0000      EA900000      EA940000      EA980000
 EA9C0000      EAA00000      EAA40000      EAA80000      EAAC0000
 EAB00000      EAB40000      EAB80000      EABC0000      EAC00000
 EAC40000      EAC80000      EACC0000      EAD00000      EAD40000
 EAD80000      EADC0000      EAE00000      EAE40000      EAE80000
 EAEC0000      EAF00000      EAF40000      EAF80000      EAFC0000
 EB000000      EB040000      EB080000      EB0C0000      EB100000
 EB140000      EB180000      EB1C0000      EB200000      EB240000
 EB280000      EB2C0000      EB300000      EB340000      EB380000
 EB3C0000      EB400000      EB440000      EB480000      EB4C0000
 EB500000      EB540000      EB580000      EB5C0000      EB600000
 EB640000      EB680000      EB6C0000      EB700000      EB740000
 EB780000      EB7C0000      EB800000      EB840000      EB880000
 EB8C0000      EB900000      EB940000      EB980000      EB9C0000
 EBA00000      EBA40000      EBA80000      EBAC0000      EBB00000
 EBB40000      EBB80000      EBBC0000      EBC00000      EBC40000
 EBC80000      EBCC0000      EBD00000      EBD40000      EBD80000
 EBDC0000      EBE00000      EBE40000      EBE80000      EBEC0000
 EBF00000      EBF40000      EBF80000      EBFC0000

Bank # 2: INTEL 28F256P30T CFI conformant FLASH (32 bits x 16 bits)
  Size: 64 MB in 259 Sectors
  Erase timeout: 4096 ms
  Write timeout: 1024 us
  Buffer write timeout: 4096 us
  Buffer size: 2048

  Sector Start Addresses:
 EC000000      EC040000      EC080000      EC0C0000      EC100000
 EC140000      EC180000      EC1C0000      EC200000      EC240000
 EC280000      EC2C0000      EC300000      EC340000      EC380000
 EC3C0000      EC400000      EC440000      EC480000      EC4C0000
 EC500000      EC540000      EC580000      EC5C0000      EC600000
 EC640000      EC680000      EC6C0000      EC700000      EC740000
 EC780000      EC7C0000      EC800000      EC840000      EC880000
 EC8C0000      EC900000      EC940000      EC980000      EC9C0000
 ECA00000      ECA40000      ECA80000      ECAC0000      ECB00000
 ECB40000      ECB80000      ECBC0000      ECC00000      ECC40000
 ECC80000      ECCC0000      ECD00000      ECD40000      ECD80000
 ECDC0000      ECE00000      ECE40000      ECE80000      ECEC0000
 ECF00000      ECF40000      ECF80000      ECFC0000      ED000000
 ED040000      ED080000      ED0C0000      ED100000      ED140000
 ED180000      ED1C0000      ED200000      ED240000      ED280000
 ED2C0000      ED300000      ED340000      ED380000      ED3C0000
 ED400000      ED440000      ED480000      ED4C0000      ED500000
 ED540000      ED580000      ED5C0000      ED600000      ED640000
 ED680000      ED6C0000      ED700000      ED740000      ED780000
 ED7C0000      ED800000      ED840000      ED880000      ED8C0000
 ED900000      ED940000      ED980000      ED9C0000      EDA00000
 EDA40000      EDA80000      EDAC0000      EDB00000      EDB40000
 EDB80000      EDBC0000      EDC00000      EDC40000      EDC80000
 EDCC0000      EDD00000      EDD40000      EDD80000      EDDC0000
 EDE00000      EDE40000      EDE80000      EDEC0000      EDF00000
 EDF40000      EDF80000      EDFC0000      EE000000      EE040000
 EE080000      EE0C0000      EE100000      EE140000      EE180000
 EE1C0000      EE200000      EE240000      EE280000      EE2C0000
 EE300000      EE340000      EE380000      EE3C0000      EE400000
 EE440000      EE480000      EE4C0000      EE500000      EE540000
 EE580000      EE5C0000      EE600000      EE640000      EE680000
 EE6C0000      EE700000      EE740000      EE780000      EE7C0000
 EE800000      EE840000      EE880000      EE8C0000      EE900000
 EE940000      EE980000      EE9C0000      EEA00000      EEA40000
 EEA80000      EEAC0000      EEB00000      EEB40000      EEB80000
 EEBC0000      EEC00000      EEC40000      EEC80000      EECC0000
 EED00000      EED40000      EED80000      EEDC0000      EEE00000
 EEE40000      EEE80000      EEEC0000      EEF00000      EEF40000
 EEF80000      EEFC0000      EF000000      EF040000      EF080000
 EF0C0000      EF100000      EF140000      EF180000      EF1C0000
 EF200000      EF240000      EF280000      EF2C0000      EF300000
 EF340000      EF380000      EF3C0000      EF400000      EF440000
 EF480000      EF4C0000      EF500000      EF540000      EF580000
 EF5C0000      EF600000      EF640000      EF680000      EF6C0000
 EF700000      EF740000      EF780000      EF7C0000      EF800000
 EF840000      EF880000      EF8C0000      EF900000      EF940000
 EF980000      EF9C0000      EFA00000      EFA40000      EFA80000
 EFAC0000      EFB00000      EFB40000      EFB80000      EFBC0000
 EFC00000      EFC40000      EFC80000      EFCC0000      EFD00000
 EFD40000      EFD80000      EFDC0000      EFE00000      EFE40000
 EFE80000      EFEC0000      EFF00000      EFF40000      EFF80000
 EFFC0000      EFFD0000      EFFE0000      EFFF0000


Mr. Bill 05-17-2011 11:34 PM

From what I can gather from this document, your device has a single 32-bit chip with a 16-bit data bus. (a 16-bit bus array is required for CFI compliance, regardless of the chip configuration).

archieval 05-18-2011 01:32 AM

From what you said, does it mean data are 16-bits wide? but what is the 32bit chip?

This is my device:

From the source code of cfi_comp_flash.c, this is the printf statement.


printf("CFI conformant FLASH (%d bits x %d bits\n",
    (info->portwidth << 3), (info->chipwidth << 3));

portwidth is 4 and chipwidth is 2. I am thinking where did the 4 came from in that datasheet, and why shift by 3.


Mr. Bill 05-18-2011 11:16 AM

Yes, for CFI conformance, data is 16 bits.

Sorry, but I'm not a flash technician or programmer. I could have guessed that's what 32 x 16 meant, as it's an old notation from "back in the day" when we had 16-bit CPUs w/8-bit buses and 32-bit CPUs w/16-bit buses, but I wanted to be sure. From the doc to which I posted a link, some example configs are:

single 16- or 32-bit chip in 16-bit mode = 16-bit bus.

double 8-bit chips = 16-bit bus array.

double 16-bit chips in 8-bit mode each = 16-bit bus array.

Hope this helps.

nini09 05-25-2011 03:37 PM

Flash data bus is 16 bits and CPU data bus is 32bits.

All times are GMT -5. The time now is 07:25 PM.