реклама на сайте
подробности

 
 
> Опять SD карта, проблема с CMD17
AndreyVN
сообщение Jan 26 2012, 15:38
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



Всем привет!

Проблема с SD картой, работаю в режиме SPI на частоте 4MHz.

С иницилизацией как-то гладко все получилось. Шлю команды CMD0, CMD8, CMD55, ACMD41, CMD16 со всей сопутствующей логикой – читаю OCR регистр анализирую биты Busy и CCS, отличаю CDHC и SDSC, смотрю режим адресации, при необходимости выставляю 255 байт.

Проблемы начинаются при попытке прочитать сектор CMD17. Сначала вычитываю R1=00, потом жду 0xFE и читаю 255 байт.

Две карты читаются замечательно (SDHC 4Gb и SDSC 1Gb).

А две карты (SDSC 2Gb и SDSC 128Mb) возвращают полную ерунду – 99% байт не совпадают с реальным содержимым нулевого сектора, а два последних байта почему-то всегда совпадают 0x55, 0xAA.

Подобная ситуация воспроизводится и с нулевым сектором и с любым другим, т.е. режим адресации, вроде, не причем.

Может у кого-то было что-то похожее? Уже не знаю, что делать…
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 12)
aaarrr
сообщение Jan 26 2012, 15:51
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(AndreyVN @ Jan 26 2012, 19:38) *
Подобная ситуация воспроизводится и с нулевым сектором и с любым другим, т.е. режим адресации, вроде, не причем.

Если с нулевым, то можно заподозрить путаницу с нулевым логическим/физическим. А вообще, включите CRC - все сразу станет понятно.
Go to the top of the page
 
+Quote Post
AndreyVN
сообщение Jan 27 2012, 04:12
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



Цитата(aaarrr @ Jan 26 2012, 19:51) *
Если с нулевым, то можно заподозрить путаницу с нулевым логическим/физическим. А вообще, включите CRC - все сразу станет понятно.


А разве CMD17 может работать с логическими секторами??? Это же понятие структуры FAT, ни контроллер ни CMD17 понятия не имеют о FАT. Или я что-то путаю?
На отправку команды - вставлял корректный код CRC7, та-же картина, на прием - не пробовал это'ж надо код для подсчета CRC16 написать.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 27 2012, 11:19
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(AndreyVN @ Jan 27 2012, 08:12) *
А разве CMD17 может работать с логическими секторами??? Это же понятие структуры FAT, ни контроллер ни CMD17 понятия не имеют о FАT. Или я что-то путаю?

Я имел в виду путаницу в той части, в которой вы смотрите "реальное" содержимое сектора. Карта, разумеется, ничего не знает о структуре диска.

Цитата(AndreyVN @ Jan 27 2012, 08:12) *
На отправку команды - вставлял корректный код CRC7, та-же картина, на прием - не пробовал это'ж надо код для подсчета CRC16 написать.

Да что там этого кода:
Код
const unsigned short sd_crc16_table_a[16] =
{
    0x0000, 0x1231, 0x2462, 0x3653,
    0x48c4, 0x5af5, 0x6ca6, 0x7e97,
    0x9188, 0x83b9, 0xb5ea, 0xa7db,
    0xd94c, 0xcb7d, 0xfd2e, 0xef1f
};

const unsigned short sd_crc16_table_b[16] =
{
    0x0000, 0x1021, 0x2042, 0x3063,
    0x4084, 0x50a5, 0x60c6, 0x70e7,
    0x8108, 0x9129, 0xa14a, 0xb16b,
    0xc18c, 0xd1ad, 0xe1ce, 0xf1ef
};

unsigned short sd_crc16(unsigned char *buff, unsigned int len)
{
    unsigned char data;
    unsigned short crc = 0;

    while(len--)
    {
        data = *buff++ ^ (crc >> 8);
        crc = (sd_crc16_table_a[(data & 0xf0) >> 4] ^ sd_crc16_table_b[data & 0x0f]) ^ (crc << 8);
    }
    return crc;
}
Go to the top of the page
 
+Quote Post
AndreyVN
сообщение Jan 27 2012, 11:31
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



Цитата(aaarrr @ Jan 27 2012, 15:19) *
Я имел в виду путаницу в той части, в которой вы смотрите "реальное" содержимое сектора. Карта, разумеется, ничего не знает о структуре диска.


Это могло-бы все объяснить! Смотрю, действительно, через карт-ридер и WinHex.

Цитата
Да что там этого кода:


Спасибо!!!

О результатах доложу.
Go to the top of the page
 
+Quote Post
AndreyVN
сообщение Jan 27 2012, 18:13
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



Цитата(AndreyVN @ Jan 27 2012, 15:31) *
Это могло-бы все объяснить! Смотрю, действительно, через карт-ридер и WinHex.


CRC16 считается идеально. То есть карта возвращает корректные данные с корректрой CRC,
которые не имеют ничего общего с тем, что показывает WinHex. Картина воспроизводится на 3х SD-картах из 5.

Интересно, что последовательность байт которую читает контроллер, вообще не находится WinHex'ом при поиске по всей карте.
Напрашивается версия о "битых" или еще как-то скрытых секторах, которые Windows не показывает. (???) Форматирование тоже ничего не меняет.

К стати, проверку СRC (CMD59) можно было и не включать, все карточки не зависимо от CMD59 возвращают после данных, прочитанных CMD17 корректную CRC. Фактически, CMD59 включает только проверку CRC7 перед исполнении команды.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 27 2012, 18:26
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(AndreyVN @ Jan 27 2012, 22:13) *
Фактически, CMD59 включает только проверку CRC7 перед исполнении команды.

Еще при записи данных.

Можете привести дамп "неправильного" нулевого сектора?
Go to the top of the page
 
+Quote Post
AndreyVN
сообщение Jan 27 2012, 19:28
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



Цитата(aaarrr @ Jan 27 2012, 22:26) *
Можете привести дамп "неправильного" нулевого сектора?


00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
13 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 82
1C 03 00 0B 50 CA C6 00 20 00 00 00 C0 EC 00 00 00
1D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA

CRC= 68C0
Go to the top of the page
 
+Quote Post
AndreyVN
сообщение Jan 27 2012, 19:28
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



-
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 27 2012, 19:49
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Дык это таблица разделов с одним разделом FAT32 на 120МБайт. Только битая таблица.
Go to the top of the page
 
+Quote Post
AndreyVN
сообщение Jan 28 2012, 07:11
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



Цитата(aaarrr @ Jan 27 2012, 23:49) *
Дык это таблица разделов с одним разделом FAT32 на 120МБайт. Только битая таблица.

Да, действительно, похоже, но с множественными ошибками.

1BE = 00 (1) 0 - раздел не активный;
1BF=82 (1) Номер головки для начального сектора раздела
1C0=03,00 (2)Номер сектора и цилиндра для начального сектора
1C2=0B (1) не подходит (0 - неизвестная система; 1, 4 – DOS);
1С3=50 (1)Номер головки для последнего сектора раздела.
1С4=СА,C6 (2)Номер сектора и цилиндра для последнего сектора раздела
1С6=00,20,00,00 (4)Относительный номер сектора начала раздела
1СA=C0,EC,00,00 (4) Размер раздела в секторах =3236691968 dec.

Тем не менее, продолжил поиски этих данных средствами Windows - нету!
Достаточно задать поиск кода CA он находится только один раз в самом последнем секторе карточки, который забит мусором
(карта только из магазина, содержит FAT32 и нули во всех секторах кроме последнего).

Попробую зайти с другой стороны - писать контоллером и смотеть Windows, где оно появилось...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 28 2012, 09:44
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



0x0B - FAT32

Откройте её в WinHEX'е как физический диск - должно быть все видно.
Go to the top of the page
 
+Quote Post
AndreyVN
сообщение Jan 28 2012, 10:37
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 754
Регистрация: 29-06-06
Из: Volgograd
Пользователь №: 18 458



Цитата(aaarrr @ Jan 28 2012, 12:44) *
Откройте её в WinHEX'е как физический диск - должно быть все видно.


Точнно, открыл как физический диск - все совпало!

А я неделю бился, все смотрел на опцию "физический сектор",
думал, что раз она неподсвечена, значит он и есть физический.

Еще раз спасибо! beer.gif

PS: А поиск не находил цепочку байт, потому, что она в Unpartitioned space.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 11:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01484 секунд с 7
ELECTRONIX ©2004-2016