하드웨어 구성 변경을 수용하기 위해 기존 초기화 순서 (SDRAM의 하위 레벨 초기화)를 수정하려고합니다. iMX31의 기존 SDRAM이 다른 크기로 교체되었습니다. 그렇지 않으면 동일한 유형 / 제조업체 / 레이아웃 / 핀 / 타이밍입니다. 사양에 따라.
간단한 설치 시나리오 및 오류 동작 : 보드 부팅을 수행했습니다 (순서는 NAND에서 부트 로더 실행, 'step2 bootloader'를 RAM으로 복사, RAM에서 'step2 bootloader'실행). 그러나 RAM에서 (2 단계로 이동 한 후) 실행이 일관되게 실패하기 때문에 일부 설정이 잘못 된 것 같습니다.
잘못된 매개 변수를 식별하기 위해 대량의 심층 테스트를 수행했으며 결과는 다음과 같습니다.-NAND 또는 JTAG에서 실행될 때 단일 바이트 / 워드 읽기 / 쓰기 작업-NAND에서 실행될 때 블록 단위 / 버스트 쓰기가 작동하는 것 같습니다 ( JTAG도) 흥미로운 점 :-블록 단위로 쓴 후 올바른 바이트 / 워드 (!)를 읽으려면 SDRAM 주소를 여러 번 읽어야합니다 .- 열 설정을 수정하면 더 높은 (+1) 양만 사용합니다. "로드 모드"에 대한 열이지만 사전 충전 / 새로 고침에 대한 열이 아닌 경우 작동하지만 일관성이 없습니다 (내 이론에 따르면 누락 된 열이 중요하지 않은 낮은 주소 범위에서 안정적으로 작동합니다).
내 구성에 대한 아이디어를 얻으려면 RAM의 설정 이이 질문의 설정과 거의 동일합니다. RAM 타이밍 외에도 Freescale에서 제공하기 때문에 놀라운 것은 아닙니다. Freescale iMX31에서 SDRAM 주소를 CPU 주소로 변환하려면 어떻게해야합니까? 원래 설정은 동일하며 (링크에서와 같이 64MB SDRAM) 새 RAM은 128MB입니다. 모든 레퍼런스 보드에는 64MB 또는 128MB가 제공되므로 두 값 모두 iMX31에서 지원되며 파생됩니다.
변경해야 할 사항 (주의 : 가정!)은 RAM의 COLUMN 구성 (열 하나 이상)에만 있습니다. RAM 크기는 두 배이지만 그렇지 않은 경우 사양은 정확히 같은 타이밍 등을 요구합니다. 열이 하나만 더 있기 때문에 (위 링크 참조) 새 RAM의 경우 프리 차지, 새로 고침 및로드 모드 레지스터가 0x92100000에서 0x92200000으로 변경됩니다 (예 : ) 아무것도 변경되지 않습니다.
질문 1 : 모든 타이밍과 물리적 칩 특성 (드라이브 강도, 타이밍 및 전력 소비에 영향을 미침)이 유사 할 경우 열 개수의 변경이 "로컬"(다른 설정에는 영향을 미치지 않음) 일 것이라는 가정이 합리적입니까? 흥미롭게도 내 설정을 온라인 (U-Boot, 128MB의 Red-Boot) 및 드라이브 강도와 같은 보드 별 설정 옆에있는 다른 많은 설정과 비교 한 결과 차이가 없습니다.
질문 2 : 위의 오류 동작 (작업 쓰기, 일부만 읽기)은 RAM의 특정 잘못된 설정에 고유 한 것일 수 있습니다. 누구든지 더 자세히 살펴볼 설정을 알려 주실 수 있습니까? 또한 '안전한'매개 변수를 설정하여 성능이 저하 되더라도 시스템이 범인을 좁힐 수있게합니다.