public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Michael Schwingen <rincewind@discworld.dascon.de>
To: u-boot@lists.denx.de
Subject: [U-Boot-Users] "stacked" memory mapped flash assisted with GPIOs
Date: Sun, 20 Jan 2008 12:26:04 +0100	[thread overview]
Message-ID: <47932FCC.3070302@discworld.dascon.de> (raw)
In-Reply-To: <200801200556.11352.vapier@gentoo.org>

Mike Frysinger wrote:
> some Blackfin processors have an optional async memory controller which allows 
> for up to 4 megs of memory to be mapped.  sometimes these 4 megs are not 
> enough, so people extend this by hooking up the higher address pins to GPIOs.  
> so if you want to map 8 megs of memory, the highest address pin would be tied 
> to a GPIO line while the remaining address pins would be hooked up like 
> normal directly to the processor.
>   
Hm - I have seen this on an ARM11 CPU recently (don't ask - fortunately, 
I did not have to work on that target for long, and the u-boot they 
provided was a good example how not to do patches).
It seems strange why chip manufacturers implement such a limited 
expansion bus address space on CPUs which have enough CPU address 
capability, expecially on devices that support linux.

> there are a few ways i can implement this in u-boot (and ive prototyped a 
> couple), but the question is which way to go.  i obviously dont want to pick 
> one which will be rejected for $whatever-reason.
>
> possibilities:
> - add a command to manually toggle the GPIO lines
>  * pros: simple to implement and requires no change to existing code
>  * cons: requires user to manually toggle the address lines.  cannot access 
> multiple flashes in a single command.  not sure if this would work with 
> different types of flashes as the CFI code would only detect the first.
>   
That does not seem very useful, unless you want to have two flashes that 
are switcheable, with a complete software version in each, so that the 
second flash is used for backup only. You can not have eg. a Linux image 
spanning across the boundary, and even a linux image in one flash and 
initrd in the other will probably also require extra work.

> - have memory display / flash write commands toggle the GPIO lines
>  * pros: user interface is transparent and not confusing by making it seem 
> like 1 flash exists (think software raid 0).  able to use 1 write command and 
> the lower layers will automatically split it across multiple flashes.  should 
> work with multiple types of flashes.
>  * cons: requires modification to cmd_mem.c and cfi_flash.c.
>   
I think this is the way to go (do it somewhere in the lowlevel flash 
code)  - you have access to the whole flash, and higher-level commands 
can access the whole flash area. Not sure about bootm etc. - if commands 
directly reference flash locations, they will have to be changed to use 
some kind of flash_read accessor function that can do the GPIO toggling.

You will need a range of "virtual" addresses that is big enough to map 
the whole flash - this is easy if the next 4MB after the physical flash 
location are unused, otherwise, you will have to fine a space in the 
memory map elsewhere.

I have not yet looked at the details of working with NAND flash, but the 
requirements should be similar. Maybe the NAND subsystem can be coerced 
to do what you need ...

cu
Michael

  reply	other threads:[~2008-01-20 11:26 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-20 10:56 [U-Boot-Users] "stacked" memory mapped flash assisted with GPIOs Mike Frysinger
2008-01-20 11:26 ` Michael Schwingen [this message]
2008-01-20 20:04   ` Mike Frysinger
2008-01-20 21:28     ` Michael Schwingen
2008-01-21  5:57       ` Mike Frysinger
2008-01-21 12:00 ` Haavard Skinnemoen
2008-01-21 13:01   ` Mike Frysinger
2008-01-21 22:20     ` Haavard Skinnemoen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=47932FCC.3070302@discworld.dascon.de \
    --to=rincewind@discworld.dascon.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox