Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Общетехнические вопросы

Общетехнические вопросы Общие вопросы аналоговой и цифровой электроники.

Ответ
 
Опции темы Опции просмотра
Старый 18.09.2007, 21:02   #1
ADL
Member
 
Аватар для ADL
 
Регистрация: 26.02.2007
Адрес: Новосибирск
Возраст: 49
Сообщений: 45
Вес репутации: 100/46
ADL will become famous soon enoughADL will become famous soon enough
Question Чтение SD карты

Помогите разовбраться с процедурой чтения SD карты.
Я использую режим SPI и делаю следующим образом:

CMD0 (с лог. 0 на CS)--> R1= 0x01 -->

-->CMD55-->ACMD41-->R1= 0x00?--Да-->CMD18 c нулевым аргументом
| |
|----<----------- Нет---|

Я так понимаю, что после того, как прочитан отклик R1 на команду CMD18 и считан байт 0xFE (что означает начало блока данных с указанным в аргументе CMD18 начальным адресом) должны последовать байты данных. В моём случае ожидается чтение блока BOOT. Но я вижу только нули. Читал карту при помощи WINHEX и знаю, что BOOT сектор начинается с символа 0xEB. Ставлю в маску фильтра начала данных вместо 0xFE этот самый 0xEB и вижу начало BOOTa. Но до того, как это происходит "можно сходить покурить". Получается, что какие-то проблемы с адресом?
ADL вне форума   Ответить с цитированием
Старый 18.09.2007, 23:39   #2
ADL
Member
 
Аватар для ADL
 
Регистрация: 26.02.2007
Адрес: Новосибирск
Возраст: 49
Сообщений: 45
Вес репутации: 100/46
ADL will become famous soon enoughADL will become famous soon enough
Talking Re: Решение нашёл....

Решение нашёл, но это то, что получилось у меня, а как делать правильно никто не говорит. Проблема была в том, что при чтении блока, начиная с нулевого адреса я не видел содержимого BOOT сектора, который по идее начинается с нулевого адреса. Установив фильтр на первый символ в BOOTе, я увидел его начало, но адрес, с которого он начинается оставался для меня загадкой. В WINHEX я обратил внимание на такое понятие как скрытые секторы. Умножил количество этих скрытых секторов на количество байт в секторе и полученное смещение подставил в CMD18. В результате я попал точно на начало BOOT сектора. Получается, что в CMD18 передаётся не физический, а логический адрес. Количество скрытых секторов у различных карт разное. Главное, что их количество может быть высчитано из параметров, имеющихся в BOOTе. Таким образом можно получить логическое смещение адреса, которое всегда нужно будет добавлять к задаваемому адресу. Может быть так и задумано, но как то получается немного коряво.

P.S Хотелось бы узнать, как это делается правильно.
ADL вне форума   Ответить с цитированием
Старый 19.09.2007, 10:36   #3
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/100
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию Re: Решение нашёл....

Цитата:
Сообщение от ADL Посмотреть сообщение
Решение нашёл, но это то, что получилось у меня, а как делать правильно никто не говорит. Проблема была в том, что при чтении блока, начиная с нулевого адреса я не видел содержимого BOOT сектора, который по идее начинается с нулевого адреса. Установив фильтр на первый символ в BOOTе, я увидел его начало, но адрес, с которого он начинается оставался для меня загадкой. В WINHEX я обратил внимание на такое понятие как скрытые секторы. Умножил количество этих скрытых секторов на количество байт в секторе и полученное смещение подставил в CMD18. В результате я попал точно на начало BOOT сектора. Получается, что в CMD18 передаётся не физический, а логический адрес. Количество скрытых секторов у различных карт разное. Главное, что их количество может быть высчитано из параметров, имеющихся в BOOTе. Таким образом можно получить логическое смещение адреса, которое всегда нужно будет добавлять к задаваемому адресу. Может быть так и задумано, но как то получается немного коряво.

P.S Хотелось бы узнать, как это делается правильно.
Почитайте это сначала. Вообще на электорниксе много инфы на эту тему.
DL36 вне форума   Ответить с цитированием
Старый 19.09.2007, 12:05   #4
ADL
Member
 
Аватар для ADL
 
Регистрация: 26.02.2007
Адрес: Новосибирск
Возраст: 49
Сообщений: 45
Вес репутации: 100/46
ADL will become famous soon enoughADL will become famous soon enough
По умолчанию Re: Чтение SD карты

Спасибо за ссылку, но там народ всё обсуждает как нужно инициализировать карту и какие резисторы на какие ноги вешать.
По подключению и инициализации карты у меня вопросов не возникло.
Вопрос, заданный мной относится к процедуре чтения данных. Обсуждений этой темы я нигде не встречал.
ADL вне форума   Ответить с цитированием
Старый 19.09.2007, 14:08   #5
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/100
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию Re: Чтение SD карты

Цитата:
Сообщение от ADL Посмотреть сообщение
Спасибо за ссылку, но там народ всё обсуждает как нужно инициализировать карту и какие резисторы на какие ноги вешать.
По подключению и инициализации карты у меня вопросов не возникло.
Вопрос, заданный мной относится к процедуре чтения данных. Обсуждений этой темы я нигде не встречал.
Там моя ссылка есть на файловую систему и MBR.

Последовательность такая, читаем MBR, таблицу разделов.
Из таблицы разделов берем Абсолютный (логический) номер начального сектора раздела LBA это будет BPB его и читаем, разбираем что по чем.

Может это надо Азы работы с ММС

Последний раз редактировалось DL36; 19.09.2007 в 14:14. Причина: Добавил чуток
DL36 вне форума   Ответить с цитированием
Старый 19.09.2007, 15:49   #6
ADL
Member
 
Аватар для ADL
 
Регистрация: 26.02.2007
Адрес: Новосибирск
Возраст: 49
Сообщений: 45
Вес репутации: 100/46
ADL will become famous soon enoughADL will become famous soon enough
По умолчанию Re: Чтение SD карты

MBR- Это и есть BOOT сектор. Проблема в том, что в SD физический адрес начала MBR равен не нулю т. к. с нулевого адреса начинаются скрытые секторы, а количество этих секторов и количество байт в секторе как раз и прописано в MBR. Если бы читая данные с нулевого адреса я увидел начало MBR, то и не было бы этой темы. В различных источниках по теме SD карт ничего об этом я не нашёл. Проблему я уже решил. Есть сомнение, что моё решение нестандартное, поэтому я и спрашиваю, как это делается правильно?
ADL вне форума   Ответить с цитированием
Старый 23.03.2008, 10:50   #7
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 48
Сообщений: 1,748
Вес репутации: 3479/96
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Вот могу предложить примерчик. Рабочий (+)

[quote= Может быть так и задумано, но как то получается немного коряво.
P.S Хотелось бы узнать, как это делается правильно.[/quote]

Я его как то использовал.
Я так понимаю Вам нужна функция getPartitionOffset
http://www.bobrovnik.ru/SD.ZIP
Petr вне форума   Ответить с цитированием
Старый 23.03.2008, 17:15   #8
vicve
Member
 
Регистрация: 14.09.2007
Возраст: 43
Сообщений: 56
Вес репутации: 113/44
vicve will become famous soon enoughvicve will become famous soon enough
По умолчанию Re: Чтение SD карты

2 maagalex
честно говоря, думал в Израиле зарплаты вдвое выше.
во жесть
приезжай в москву бабки зарабатывать
шучу канешн, но в каждой шутке...
сорри за оффтоп
vicve вне форума   Ответить с цитированием
Старый 23.03.2008, 21:30   #9
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 42
Сообщений: 4,285
Вес репутации: 2476/111
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Чтение SD карты

Цитата:
Сообщение от vicve Посмотреть сообщение
2 maagalex
честно говоря, думал в Израиле зарплаты вдвое выше.
во жесть
приезжай в москву бабки зарабатывать
шучу канешн, но в каждой шутке...
сорри за оффтоп
выше-но не вдвое..вчетверо,если делать то-же самое но в солидной фирме и с университетской степенью, а если работать в конторке где хозяева 3 парня по 25 лет для которых что техник-что разработчик..одна ставка..Если скажу что хочу вдвое больше или уйду-думаю мне заплатят,повесят все планируемые проекты на один месяц, а как всё закончу пошлют..
maagalex вне форума   Ответить с цитированием
Старый 07.07.2008, 21:34   #10
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 42
Сообщений: 4,285
Вес репутации: 2476/111
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Ответ: Чтение SD карты

..купил наборчик, неделю играюсь-
циклом 100 раз записываю в карту блоки по 512 байт..цикл проходит за примерно пол секунды-скорость устраивает.Правда понятия не имею куда он эти блоки кидает-какой программкой удобно смотреть содержимое карты и делать в нём поиск?
..и ещё..в API для SDCARD в моём наборе есть два способа записи на карту-один это сначала открыть(создать) файл, а потом кидать туда байты-потом карточка открывается на компьютере и в любом текст.редакторе можно посмотреть., второй способ это запись ОЗУ-буфера или сектора из 512 байт..-мне этот второй способ подходит по скорости-но можно ли будет при этом читать его потом на обычном компе?..хотябы просто дабы сохранить или скопировать содержимое как есть на другую карту
maagalex вне форума   Ответить с цитированием
Ответ

Метки
mmc, read sd card, спецификация фат


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедура чтения DS3235. Watcher Общетехнические вопросы 67 29.11.2010 08:42
время записи в с SD карту vptr Общетехнические вопросы 0 08.11.2007 10:00
PIC & SD vicve Продукция MICROCHIP 15 15.09.2007 15:35
не работает SD карта ИгорьС Общетехнические вопросы 2 20.07.2007 14:11
Чтение из CE210 НиК Продукция MICROCHIP 1 17.05.2007 11:19


Часовой пояс GMT +3, время: 10:52.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot