[Armadillo:01177] Re: SDRAM

orihara email@hidden
2006年 8月 31日 (木) 13:58:29 JST


こんにちは。折原です。

Masahiro Hanada wrote:
> orihara <email@hidden> wrote:
>
>> それを超える場合、例えば 0xD0000000 へ SDRAM を増設する事を考え
>> ると、現在の 256MB の制限を取り払って、現在割り当てられている
>> 領域と重ならないように、領域をずらしたりする必要がある。
>
> 現実的な話はさておいて、理論的な話だけで言うと。
> 0xD0000000に増設するということはSDCS1にSDRAMを接続するということを意味
します。
> カーネルは直接的なSDRAMの初期化や設定を行わないので、
> SDCS1の設定や接続されているSDRAMの初期化はブートローダで行わなくてはな
りません。
>
(中略)
> (CSの制限以外で、どこかに256MBの制限ありましたっけ?)

0xC000-0000 から SDRAM が実装されると、その後から 0xD000-0000 - 1
まで、vmalloc 用として領域が確保されるようです。
SDRAM の容量が大きくなれば、その分 vmalloc の領域は小さくなります。
(というか、SDCS0の後ろの方に SDRAM を配置すると ・・・)

include/asm-arm/arch-ep93xx/vmalloc.h
#define VMALLOC_OFFSET (8*1024*1024)
#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) &
~(VMALLOC_OFFSET-1))
#define VMALLOC_END (PAGE_OFFSET + 0x10000000)

high_memory は、実装されている SDRAM の終わりです。
なので、SDRAM は 248MB 以上実装させることは無理ということになります。
(vmalloc領域が無くなってしまうため)

他のアーキテクチャー、特にメモリーをふんだんに使えそうな物では、
VMALLOC_END の値はそれなりに大きいようです。




armadillo メーリングリストの案内