Kostochkin 0 13 августа, 2019 Опубликовано 13 августа, 2019 (изменено) · Жалоба Здравствуйте. Имеется плата с плис spartan6 и micron 8SA17 JZ086, emmc 5.0, 64Gb, питание - 3.3V. EMMC заведен в плис - clk, reset, cmd, data(8bit). Питание на микросхеме есть. В плис реализован host emmc. В железе при инициализации девайса делаю как в документации Embedded Multi-Media Card (e•MMC) Electrical Standard (5.0). - подаю питание; - подаю клок 400кГц; - жду 1.1 мс; - отправляю CMD0; - жду 64 такта; - отправляю CMD1 с аргументом 0xC0FF8080; - получаю ответ с аргументом 0xC0FF8080 - ОК; - отправляю CMD2 с аргументом 0x00000000; - получаю ответ OK; - отправляю CMD3 с аргументом 0x00000002; - получаю ответ OK; поднимаю частоту до 25МГрц; Далее отправляю CMD9, CMD7 - ответы положительные; Далее конфигурирую CMD6 с аргументом 0x03B70200 - ответ положительный, и CMD6 с аргументом 0x03B90100 - ответ положительный, поднимаю частоту до 50МГрц; Далее CMD13 - конечный статус девайса - 0x00000900 - OK; Далее пытаюсь записать один блок данных 512байт командой CMD25 c аргументом 0x00000000; Ответа по шине CMD положительный, но после записи блока жду статуса CRC на DAT0, статус не приходит, только сбрасывается в ноль DAT0 и все, статус девайса по прежнему 0x00000900... Подскажите, может кто-нибудь в курсе в чем проблема? Благодарю. Изменено 14 августа, 2019 пользователем Kostochkin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kostochkin 0 26 августа, 2019 Опубликовано 26 августа, 2019 (изменено) · Жалоба Тема актуальна, вопрос так и не решил. Кол-во байт для записи проверил, верно: - 1 байт - стартовый(x00), - 512 байт - данные, - 16 байт - crc16, - 1 байт - стоповый(xFF). Проблема еще в том, что нет возможности подключиться осциллографом... Благодарю. Изменено 26 августа, 2019 пользователем Kostochkin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Viktuar 0 26 августа, 2019 Опубликовано 26 августа, 2019 · Жалоба 3 hours ago, Kostochkin said: А попробуйте после записи запросить число записанных блоков. И еще, уходит ли mmc в состояние busy? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kostochkin 0 27 августа, 2019 Опубликовано 27 августа, 2019 (изменено) · Жалоба 21 hours ago, Viktuar said: И еще, уходит ли mmc в состояние busy? Ответ R1 на команду записи CMD25 приходит со статусом 0x00000900. Ответ R1 на команду стоп CMD12 также приходит со статусом 0x00000900. Как проверить состояние busy? Если по шине DAT0, то DAT0 сваливается в ноль, а статус CRC так и не приходит. И как запросить число записанных блоков? Благодарю. Изменено 27 августа, 2019 пользователем Kostochkin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kostochkin 0 4 сентября, 2019 Опубликовано 4 сентября, 2019 · Жалоба Проблему так и не решил. Девайс успешно прошел BUS TEST командами CMD19 и CMD14 с шириной шины данных 8 бит. Получается конфигурация верная, шина работает, а crc token почему-то не приходит, после данных с командами CMD24 или CMD25. Благодарю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kostochkin 0 10 сентября, 2019 Опубликовано 10 сентября, 2019 (изменено) · Жалоба Проблема решилась, дело было в схемотехнике. У меня другой вопрос о emmc. Замерил время записи одного блока данных 512b в девайс. Это время оказалось примерно равно 100000 тактов в обычном режиме. Почему так долго? Я нигде не нашел в документации, сколько времени занимает у девайса записать один блок. Подскажите, 100000 тактов (при частоте 12мгц это примерно 8мс) это нормально для девайса emmc 5.0? Замеряю время после получения токена crc, пока DAT0 в нуле. Благодарю. Изменено 10 сентября, 2019 пользователем Kostochkin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 10 сентября, 2019 Опубликовано 10 сентября, 2019 · Жалоба 21 minutes ago, Kostochkin said: Почему так долго? Запись единичных блоков всегда неэффективна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kostochkin 0 10 сентября, 2019 Опубликовано 10 сентября, 2019 · Жалоба А если записывать, допустим, 100 блоков, то это время будет меньше на каждый блок? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 10 сентября, 2019 Опубликовано 10 сентября, 2019 · Жалоба Да, грубо говоря, получите те же 8 мс на 100 блоков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kostochkin 0 10 сентября, 2019 Опубликовано 10 сентября, 2019 (изменено) · Жалоба 12 minutes ago, aaarrr said: Да, грубо говоря, получите те же 8 мс на 100 блоков. Не понимаю. Но я ведь жду готовности девайса после каждой записи одного блока. Блок записал, жду пока девайс запрограммируется, и опять блок записал, жду пока девайс запрограммируется... Как тогда это время может уменьшиться? Или я что-то не понимаю... Девайс же может и не знать кол-во записываемых блоков. Изменено 10 сентября, 2019 пользователем Kostochkin Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 10 сентября, 2019 Опубликовано 10 сентября, 2019 · Жалоба При записи группы блоков busy будет устанавливаться не после каждого, а раз в N блоков и в конце записи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kostochkin 0 10 сентября, 2019 Опубликовано 10 сентября, 2019 · Жалоба 23 minutes ago, aaarrr said: Да, грубо говоря, получите те же 8 мс на 100 блоков. Наверно вы правы, посмотрел внимательно документацию, ждать запрограммирования устройства надо только после последнего переданного блока. Благодарю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kostochkin 0 10 сентября, 2019 Опубликовано 10 сентября, 2019 · Жалоба Записал 8 блоков командой CMD25, стартовый адрес = X"0100". после 1 блока, долго жду подъема DAT0 - эти же 100000 тактов, после остальных блоков, кроме последнего, DAT0 поднимается в течение 10 тактов... Пробовал задавать кол-во блоков командой CMD23, CMD25 - результат тот же. Вопрос, почему после записи первого блока 512b девайс так долго занят? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 10 сентября, 2019 Опубликовано 10 сентября, 2019 · Жалоба 47 minutes ago, Kostochkin said: Вопрос, почему после записи первого блока 512b девайс так долго занят? Стиранием, например, занят. Вообще, тут полагаться на какую-то определенность в поведении нельзя - гарантируется только средняя скорость. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kostochkin 0 11 сентября, 2019 Опубликовано 11 сентября, 2019 · Жалоба 22 hours ago, aaarrr said: Стиранием, например, занят. Вообще, тут полагаться на какую-то определенность в поведении нельзя - гарантируется только средняя скорость. Благодарю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться