2014-09-17 8 views
1

EMMC 읽기/쓰기 문제가 발생했습니다. Omap35x에 EMMC 드라이버를 쓰려고합니다. emmc 카드와 omap을 모두 초기화하면 카드가 tran 상태가됩니다. 내 읽기 및 쓰기 명령은 결코 성공하지 못합니다. 여기에 내가 무엇을했는지 있습니다 :Omap 35x Emmc 읽기/쓰기 문제

  1. CMD0 보내기 (MMCHS_CMD = 0x00000000의 MMCHS_ARG = 0xf0f0f0f0)
  2. 바쁜 전송 CMD1 (MMCHS_CMD = 0x01020000 MMCHS_ARG = 0x40FF8080)
  3. CMD2을 (보내기 MMCHS_CMD = 0x02090000 MMCHS_ARG = 동안 을 0x00000000)
  4. CMD3 (MMCHS_CMD = 0x031a0000 MMCHS_ARG = 0x00010000) 응답을 보내기 = 0x500 행선지 주
  5. m_regs-> MMCHS_CON & = ~ 0x00000001;
  6. 보내기 CMD9 (MMCHS_CMD = 0x009090000 MMCHS_ARG = 0x00010000)
  7. 보내기 CMD13 확인 상태 (MMCHS_CMD = 0x0D1a0000 MMCHS_ARG = 0x00010000) 응답 = 0x700
  8. CMD7 보내기 (MMCHS_CMD = 0x071a0000 MMCHS_ARG = 0x00010000) 응답 = 0x700
  9. CMD13 상태를 확인하십시오. (MMCHS_CMD = 0x0D1a0000 MMCHS_ARG = 0x0D1a0000) CMD16을 전송하십시오 (MMCHS_CMD = 0x03a0000 MMCHS_ARG = 0x00000200). 0x00010000) 응답 = 0x900

위의 단계를 수행 한 후 명령 CMD24 (MMCHS_CMD = 0x182A0002 MMCHS_ARG = 0x00000001 및 MMCHS_BLK = 0x00000200)를 보내려고했지만 Omap이 MMCHS_STAT_BWR을 성공적으로 입력 한 다음 512 바이트 데이터를 보냈습니다. 오실로스코프를 사용하여 데이터 라인을 통해 전송되는 데이터를 관찰 할 수 있지만 TC/DTO를 폴링 할 때 MMU_STAT에서 0x108111을 수신하여 데이터 시간 초과를 나타냅니다. 명령에 대한 응답 0x900을 수신 할 수 있습니다.

읽으려면 CMD17 (MMCHS_CMD = 0x112A0012 MMCHS_ARG = 0x00000001 및 MMCHS_BLK = 0x00000200)을 보냅니다. 나는 또한 명령에 대한 응답 0x900을받을 수있다. Omap은 MMCHS_STAT_BRR을 성공적으로 입력하지만 데이터 회선을 통해 전송되는 데이터는 관찰 할 수 없었습니다.

내가 수행 한 단계에서 문제가 있거나 작동하도록하는 예가 있으면 알려주십시오.

답변

0

기본 속도로 쓰거나 읽으려고 한 적이 있습니까? 9 단계를 건너 뛸 수 있습니다. 10 단계에서 클록을 48MHz로 변경하지 말고 다시 시도하십시오.

또한 9 단계에서 CMD6이 고속 모드로 전환하면 READY_FOR_DATA 비트가 준비되지 않습니다. 나는 eMMC가 데이터 준비가되었는지 확인하기 위해 CMD13을 추가 할 수 있다고 생각한다. eMMC의 용량이 2GB를 초과하면 10 단계에서 CMD16을 보낼 필요가 없습니다. 대용량 eMMC는 기본적으로 섹터 모드입니다.

데이터 제한 시간에는 어떤 제한이 있습니까? 내 실험에서 일부 eMMC는 응답 후 첫 번째 데이터를 8ms 이상 보냅니다.