Linux - Embedded This forum is for the discussion of Linux and embedded devices.
Notices
Welcome to
LinuxQuestions.org , a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free.
Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please
contact us . If you need to reset your password,
click here .
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
05-17-2011, 09:10 PM
#1
Member
Registered: Apr 2007
Location: Philippines
Distribution: Kubuntu, Ubuntu, CentOS
Posts: 282
Rep:
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.
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
Regards,
archieval
05-17-2011, 10:34 PM
#2
Member
Registered: Mar 2011
Location: Maryland, USA
Distribution: Ubuntu 10.04, PuppyLinux 5.2.5
Posts: 159
Rep:
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).
05-18-2011, 12:32 AM
#3
Member
Registered: Apr 2007
Location: Philippines
Distribution: Kubuntu, Ubuntu, CentOS
Posts: 282
Original Poster
Rep:
@Mr.Bill
From what you said, does it mean data are 16-bits wide? but what is the 32bit chip?
This is my device:
http://www.dinigroup.com/files/30666...iscrete_DS.pdf
From the source code of cfi_comp_flash.c, this is the printf statement.
Code:
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.
Regards,
archieval
Last edited by archieval; 05-18-2011 at 12:47 AM .
05-18-2011, 10:16 AM
#4
Member
Registered: Mar 2011
Location: Maryland, USA
Distribution: Ubuntu 10.04, PuppyLinux 5.2.5
Posts: 159
Rep:
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.
05-25-2011, 02:37 PM
#5
Member
Registered: Apr 2009
Posts: 505
Rep:
Flash data bus is 16 bits and CPU data bus is 32bits.
Thread Tools
Search this Thread
Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
All times are GMT -5. The time now is 04:19 PM .
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know .
Latest Threads
LQ News