드디어 이지보드의 메모리를 128M로 확장하려고 합니다.

다행히 구로쪽에서 SDRAM K4S561632C-TC75 샘플을 구할 수 있었습니다.

그래서 아래와같은 순서로 진행하였고 이제 납땜 수술을 진행하려고 하는데,

.... 좀 겁이납니다. 더 수정할 사항이 있는지 알고 싶습니다.

지난번에 부트로더의 ez_m01.h도 수정하라고 하셔서 어드레스 부분만 수정했는데,

혹시 SDRAM을 두개에서 4개로 늘리면 Chip Enable 설정 같은 부분들도 바꿔줘야하는지 알고 싶습니다.

가상 어드레스 맵핑 부분에도 혹시 고쳐줘야하는지...

=========================================================================

1. 설명
=======

64M의 램디스크 공간과 64M의 메모리를 필요로 하므로 도합 128M의 SDRAM공간이 필요합니다. 때문에 기존에 보드에
붙어있던 두개의 16M SDRAM을 떼어내고 32M ( 256M bit ) SDRAM 4개를 장착하기로 했습니다. 플래쉬에 저장될 압축
된 램디스크의 크기는 12M이하로 가정하고 부트로더에서 이를 수정하였습니다.

before: K4S281632C-TC75 ( 2M x 16bit x 4 Banks = 128M bit) x 2 = 32M bytes

after : K4S561632C-TC75 ( 4M x 16bit x 4 Banks = 128M bit) x 4 = 128M bytes

2. Kernel Configuration
======================

/usr/src/linux/arch/arm/kernel/setup.c
--------------------------------------

< #define MEM_SIZE (32*1024*1024)
> #define MEM_SIZE (128*1024*1024)

/usr/src/linux/arch/arm/mach-sa1100/ezboard.c
------------------------------------------------

< setup_ramdisk(1, 0, 0, 8192);
> setup_ramdisk(1, 0, 0, 65536); //DSHYUN 2002-12-03 8192);

make menuconfig 메뉴에서 바꾼부분
---------------------------------

Block Device -> Ramdisk size -> 16384 >> 65536

3. Bootloader Configuration
==========================

SDRAM 크기가 32M -> 128M로 바뀌었으므로 이에 따라 메모리맵도 아래와 같이 수정하려고 합니다.

[32M Memory Map] : Before

+---0xC200 0000---+
|
| Working RAM ( 16M )
|
+---0xC100 0000---+
|
| Bootloader ( 1M )
|
+---0xC0F0 0000---+
|
| RAM disk Image ( 7M )
|
+---0xC080 0000---+
|
| Kernel ( 7.68M )
|
+---0xC000 8000---+
|
| Kernel Param ( 32k )
|
+---0xC000 0100---+

V

[128M Memory Map] : After

+---0xC800 0000---+ [바뀜]
|
| Working RAM ( 56M )*
|
+---0xC490 0000---+ [바뀜]
|
| Bootloader ( 1M )
|
+---0xC480 0000---+ [바뀜]
|
| RAM disk Image ( 63M )*
|
+---0xC080 0000---+
|
| Kernel ( 7.68M )
|
+---0xC000 8000---+
|
| Kernel Param ( 32k )
|
+---0xC000 0100---+

그래서 해당 메모리 맵을 설정하는 부트로더의 소스 파일을 아래와 같이 수정하였습니다.

ezboot.v22/include/mem_map.h
-------------------------------

< #define RAM1_SIZE (32*1024*1024) // 램1 크기
> #define RAM1_SIZE (128*1024*1024) // 램1 크기 DSHYUN 2002-12-17

< #define DEFAULT_RAM_BOOT_START 0xC0F00000 // 램에서 부트 시작 어드레스
> #define DEFAULT_RAM_BOOT_START 0xC4800000 // 램에서 부트 시작 어드레스 DSHYUN 2002-12-17

< #define DEFAULT_RAM_WORK_START 0xC1000000 // 일반적인 부트 로더 작업 영역
> #define DEFAULT_RAM_WORK_START 0xC4900000 // 일반적인 부트 로더 작업 영역 DSHYUN 2002-12-17

압축 램디스크 이미지 크기를 4M -> 12M로 수정하고, 램디스크는 8M -> 64M로 수정했습니다.

< #define DEFAULT_RAM_RAMDISK_IMG_SIZE (4 * 1024 * 1024) // 압축 램디스크 이미지크기
< #define DEFAULT_RAM_RAMDISK_SIZE (8 * 1024 * 1024) // 램디스크 이미지 크기

> #define DEFAULT_RAM_RAMDISK_IMG_SIZE (12 * 1024 * 1024) //DSHYUN 2002-12-17 압축 램디스크 이미지크기
> #define DEFAULT_RAM_RAMDISK_SIZE (64 * 1024 * 1024) //DSHYUN 2002-12-17 램디스크 이미지 크기

ezboot.v22/include/ez_m01.h
----------------------------

< #define EZ_M01_RAM_BOOT 0xC0F00000 // 부트 영역의 시작 위치
< #define EZ_M01_RAM_BOOT_END 0xC0F20000 // 부트 영역의 끝
> #define EZ_M01_RAM_BOOT 0xC4800000 // 부트 영역의 시작 위치 DSHYUN 2002-12-17
> #define EZ_M01_RAM_BOOT_END 0xC4820000 // 부트 영역의 끝 DSHYUN 2002-12-17