도와주세요!!
글 수 15,339
2009.04.14 19:13:45 (*.130.115.19)
9371
안녕하세요. ^^
EZboot 수정에 관해서 궁금한 점이 있습니다.
현재 EZ-S2410 는 cpu를 s3c2410 (266Mhz) 를 사용하였고
램은 삼성 k4s561632h uc75(133Mhz) X 2(64MB) 32bit Bus 를 확인 하였습니다.
수정 보드의 설계는 s3c2410al-20 (200Mhz) 이고-
램은 삼성 k4s561632e uc75(133Mhz) X 1(32MB) 16bit Bus 를 사용합니다.
ezboot 의 헤더파일을 수정하여 컴파일하고 이미지를 올려보았습니다.
FAlinux 의 설정 그대로 올려보니 역시나 스코프로 찍어보았을때 SDRAM 클럭이 안나오더군요.
나름대로 수정하여 스코프를 찍어보니 3~4초후에 클럭이 나오다가 곧 사라져 버립니다.
● ezboot 의 소스코드 중에서 include/ez_2410.h 헤더에 설정들이 있어서
해당 소스 부분을 추적하여 수정하였습니다.
수정부분은 다음과 같습니다.
- cpu 클럭(FCLK) 의 속도 266000000 => 202800000
- BWSCON_BANK6, BWSCON_BANK7 설정 부분에서 BUS Width 를 DW32 => DW16
//#define BWSCON_BANK6 ( ( DW32 ) << 24 )
#define BWSCON_BANK6 ( ( DW16 ) << 24 )
//#define BWSCON_BANK7 ( ( DW32 ) << 28 )
#define BWSCON_BANK7 ( ( DW16 ) << 28 )
- BWSCON_BANK7 부분에서 reserved 설정(비활성화를 예상)
/*
#define MBC_CS7_MT ( 0x3 << 15 ) // SDRAM
#define MBC_CS7_TRCD ( 0x1 << 2 ) // 3CLK ( RAS to CAS Delay )
#define MBC_CS7_SCAN ( 0x1 << 0 ) // 9bit ( Column Address Number )
#define MBC_CS7_VALUE ( MBC_CS7_MT | MBC_CS7_TRCD | MBC_CS7_SCAN )
*/
#define MBC_CS7_MT ( 0x1 << 15 ) // SDRAM (disable)
#define MBC_CS7_TRCD ( 0x1 << 2 ) // 3CLK ( RAS to CAS Delay )
#define MBC_CS7_SCAN ( 0x1 << 0 ) // 9bit ( Column Address Number )
#define MBC_CS7_VALUE ( MBC_CS7_MT | MBC_CS7_TRCD | MBC_CS7_SCAN )
- S3C2410_REG_BANKSIZE 부분에서 메모리 크기 변경
//#define MBS_BK76MAP ( MM_64M << 0 )
#define MBS_BK76MAP ( MM_32M << 0 )
- #define S3C2410_REG_MRSRB7 0x48000030 부분 중 아래 내용 수정
/*
#define MRSRB7_WBL ( 0x0 << 9 )
#define MRSRB7_TM ( 0x0 << 7 )
#define MRSRB7_CL ( 0x3 << 4 )
#define MRSRB7_BT ( 0x0 << 3 )
#define MRSRB7_BL ( 0x0 << 0 )
*/
#define MRSRB7_WBL ( 0x1 << 9 ) // 세팅 해제(사용안함 reserved)
#define MRSRB7_TM ( 0x1 << 7 )
#define MRSRB7_CL ( 0x4 << 4 )
#define MRSRB7_BT ( 0x1 << 3 )
#define MRSRB7_BL ( 0x2 << 0 )
● 그리고 ezboot 의 include/s3c2410.h 에서도 cpu클럭을 변경하였습니다.
/*
#define FCLK 266000000
#define HCLK FCLK/2 // FCLK=266000000 HCLK=133000000
#define PCLK FCLK/4 // FCLK=266000000 PCLK= 66500000
*/
#define FCLK 202800000
#define HCLK FCLK/2 // FCLK=266000000 HCLK=133000000
#define PCLK FCLK/4 // FCLK=266000000 PCLK= 66500000
위 내용처럼 하여 ezboot 를 컴파일하여 생성된 이미지를 프린터포트로 하여
jflash 로 올려 보았습니다.
램의 38번핀 쪽의 램클럭(CLK) 를 찍어보니 3~4초 후에 클럭이 잠시 나타났다가
2초 정도 후에 사라져 버립니다. 그 이후로는 클럭이 없습니다.
나타났던 클럭은 약 100Mhz 를 유지하였고 주기적으로 나타났다가 사라짐을 약 2초가량 했습니다.
UART2(디버깅용) 쪽은 아무런 반응이 없습니다.
● SDRAM 의 데이터시트를 보고 RAS 및 CAS 등을 체크해보았습니다.
ezboot 코드상에 다음과 같았으며 데이터시트와 별 다른 것이 없었습니다.
//----------------------------------------------
// REFRESH CONTROL REGISTER
#define S3C2410_REG_REFCON 0x48000024
//----------------------------------------------
#define MRC_REFEN ( 0x1 << 23 ) // SDRAM Refresh Enabel 0=Disable 1=Enable
#define MRC_TREFMD ( 0x0 << 22 ) // SDRAM Refresh Mode 0=Auto Refresh 1=Self Refresh
#define MRC_TRP ( 0x0 << 20 ) // SDRAM RAS pre-charge Time 0=2CLK 1=3CLK 2=4CLK 3=Not Support
#define MRC_TSRC ( 0x3 << 18 ) // SDRAM Semi Row Cycle Time 0=4CLK 1=5CLK 2=6CLK 3=7CLK
//----------------------------------------------
// SDRAM MODE REGISTER SET REGISTER ( MRSR )
#define S3C2410_REG_MRSRB6 0x4800002C
//----------------------------------------------
#define MRSRB6_WBL ( 0x0 << 9 )
#define MRSRB6_TM ( 0x0 << 7 )
#define MRSRB6_CL ( 0x3 << 4 )
#define MRSRB6_BT ( 0x0 << 3 )
#define MRSRB6_BL ( 0x0 << 0 )
/* kk4s561632e-uc75.pdf 데이터 시트 */
//----------------------------------------------
Parameter Symbol Version Unit Note
60 75
Row active to row active delay tRRD(min) 12 15 ns 1
RAS to CAS delay tRCD(min) 18 20 ns 1
Row precharge time tRP(min) 18 20 ns 1
Row active time tRAS(min) 42 45 ns 1
tRAS(max) 100 us
Row cycle time tRC(min) 60 65 ns 1
Last data in to row precharge tRDL(min) 2 CLK 2, 5
Last data in to Active delay tDAL(min) 2 CLK + tRP - 5
Last data in to new col. address delay tCDL(min) 1 CLK 2
Last data in to burst stop tBDL(min) 1 CLK 2
Col. address to col. address delay tCCD(min) 1 CLK 3
Number of valid output data CAS latency=3 2 ea 4
CAS latency=2 - 1
//----------------------------------------------
변경된 cpu 클럭의 적용과 16bit 원칩 SDRAM 적용이 제대로 맞게 되었는지요?
.