Страница 1 из 2

Запись данных на SD c PC .

Добавлено: Вт мар 23, 2010 13:03:20
Buncle
Извиняюсь , что может быть повторяюсь :roll: Но есть такой вопрос . Как с ПК через стандартный ридер записать данные (WAV фаил) на карточку памяти без всяких FAT'ов и прочего , чтоб конкретно байт , записать в конкретную ячейку на SD ? Может кто программку подскажет для компа . Делаю говорилку на 51 контроллере :)
Спасибо .

Re: Запись данных на SD c PC .

Добавлено: Вт мар 23, 2010 15:11:08
nds
WINHEX вам в помощь

Re: Запись данных на SD c PC .

Добавлено: Вт мар 23, 2010 21:32:09
NiTr0
писать в \\?\Device\Harddisk<номер>

Re: Запись данных на SD c PC .

Добавлено: Ср мар 24, 2010 01:38:26
Buncle
NiTr0 писал(а):писать в \\?\Device\Harddisk<номер>
А как задать адрес начала записи ?

Re: Запись данных на SD c PC .

Добавлено: Ср мар 24, 2010 01:54:18
NiTr0
Работать как с обычным файлом.

Re: Запись данных на SD c PC .

Добавлено: Ср мар 24, 2010 08:04:18
b612
Я делал просто:
1. На чистую отформатированую карточку пишеш свой WAV, в таком случае он получается заведомо нефрагментированым.
Обычно начало попадает в адреса гдето 0x8000
2 . В начало его вписываешь кодовое слово. Наприммер у меня Maukalka
3. При первом запуске контролёр читает всё подряд пока не найдёт слово и записывает его адрес в свою флэшку
4. в следующие разы нужно только проверять, на месте ли слово.

У меня на сайте программулька, которая собирает несколько WABов в один, обрезает заголовки и формирует описатель с адресами фрагментов
http://b612.h16.ru/murka.htm

Re: Запись данных на SD c PC .

Добавлено: Ср мар 24, 2010 15:42:28
Buncle
Огромное спасибо . Очень помогли :)

Re: Запись данных на SD c PC .

Добавлено: Ср мар 24, 2010 19:09:43
NiTr0
b612 писал(а):3. При первом запуске контролёр читает всё подряд пока не найдёт слово и записывает его адрес в свою флэшку
Не проще ли тогда было бы сделать недо-драйвер нефрагментированной ФС? Для этого нужно:
1) найти в 0м секторе адрес раздела
2) найти в заголовке раздела начало корневого каталога и размер кластера
3) Найти в корневом каталоге начало файла (номер кластера) и его размер.
4) Считывать с данного кластера и далее, до окончания файла.

Re: Запись данных на SD c PC .

Добавлено: Чт мар 25, 2010 19:11:53
b612
NiTr0 писал(а):
b612 писал(а):3. При первом запуске контролёр читает всё подряд пока не найдёт слово и записывает его адрес в свою флэшку
Не проще ли тогда было бы сделать недо-драйвер нефрагментированной ФС? Для этого нужно:
не проще. т.к. бывают фат12,16,32 и размер кластера разный и в корневом каталоге, пара сотен удалённых файлов, среди которых надо искать по имени, что то же самое что сразу по сигнатуре.

Re: Запись данных на SD c PC .

Добавлено: Чт мар 25, 2010 19:42:16
NiTr0
b612 писал(а):не проще. т.к. бывают фат12,16,32
FAT12 на флешкках не бывает. FAT32 - только если явно указать или размер более 2 ГБ.
b612 писал(а):и размер кластера разный и в корневом каталоге
А кого это волнует, какой размер кластера для корневого каталога? Найти начальный кластер файла - и делов-то...
b612 писал(а):, пара сотен удалённых файлов, среди которых надо искать по имени
Не есть проблемой. 1я буква точка - пропускаем 32 байта...
b612 писал(а):что то же самое что сразу по сигнатуре.
Вычитать, скажем, пару кб (MBR, bootblock, 1й сектор корневого каталога), или вычитать пару сотен кб (31кб до начала раздела, + 2шт фат-таблицы от 64 до 128к, + 16к на корневой каталог из 512 записей - аж за которым начинаются данные) - есть разница? А если нужно 2 файла?

Re: Запись данных на SD c PC .

Добавлено: Пт мар 26, 2010 09:01:52
b612
давайте помериемся размерами программ.

Re: Запись данных на SD c PC .

Добавлено: Пт мар 26, 2010 13:08:41
NiTr0
В сотню-полторы байт ИМХО собссно процедура поиска по флэшке с FAT16 (вызывающая внешнюю процедуру чтения сектора) вложится легко. Не так уж и много.
А вот по скорости - будет на пару порядков быстрее даже в идеальном для вашего алгоритма случае.

Re: Запись данных на SD c PC .

Добавлено: Пт мар 26, 2010 16:15:07
b612
NiTr0 писал(а):В сотню-полторы байт ИМХО собссно процедура поиска по флэшке с FAT16 (вызывающая внешнюю процедуру чтения сектора) вложится легко. Не так уж и много.
А вот по скорости - будет на пару порядков быстрее даже в идеальном для вашего алгоритма случае.
у меня ровно 200 слов и не примерно, а рабочее устройство
и паузка возникает только при первом включении и то её апсолютно не заметно, а при последующих вызовах чтение начинается не 4 раза, а только 2 так что по скоросости я в выигрыше.

Re: Запись данных на SD c PC .

Добавлено: Пт мар 26, 2010 16:27:21
NiTr0
b612 писал(а):у меня ровно 200 слов и не примерно, а рабочее устройство
Слов чего?
b612 писал(а):и паузка возникает только при первом включении и то её апсолютно не заметно, а при последующих вызовах чтение начинается не 4 раза, а только 2 так что по скоросости я в выигрыше.
Нет. В проигрыше. Для полноценного алгоритма опять таки никто не заставляет при каждом обращении вычитывать по новой все. Достаточно запомнить сектор начала файла и размера, либо (для более корректной работы) - запомнить положение записи о файле в корневом каталоге.
Кстати, хотел бы я посмотреть, сколько ваш девайс будет стартовать, к примеру, в случае, если машина, записавшая флэшку, заражена вирусом, распространяющимся через файлы автозагрузки ;)

Re: Запись данных на SD c PC .

Добавлено: Пт мар 26, 2010 18:54:34
b612
NiTr0 писал(а):
b612 писал(а):у меня ровно 200 слов и не примерно, а рабочее устройство
Слов чего?
у PICов команда соединена с операндом и занимает это всё 12бит это называеется словом.
NiTr0 писал(а):Кстати, хотел бы я посмотреть, сколько ваш девайс будет стартовать, к примеру, в случае, если машина, записавшая флэшку, заражена вирусом, распространяющимся через файлы автозагрузки ;)
да ещё если всё это будет после конца :))

Re: Запись данных на SD c PC .

Добавлено: Пт мар 26, 2010 19:23:39
NiTr0
b612 писал(а):у PICов команда соединена с операндом и занимает это всё 12бит это называеется словом.
Где-то в теме есть упоминание о пиках? Потому и переспросил.
b612 писал(а):да ещё если всё это будет после конца :))
Не будет. Куча гадости создается в таком случае при первом же обращении к флэшке. Потому - сначала долго парсятся тела вирусов, после - доходит дело и до вавки...

Re: Запись данных на SD c PC .

Добавлено: Пт мар 26, 2010 20:53:01
b612
NiTr0 писал(а):
b612 писал(а):да ещё если всё это будет после конца :))
Не будет. Куча гадости создается в таком случае при первом же обращении к флэшке. Потому - сначала долго парсятся тела вирусов, после - доходит дело и до вавки...
я имел ввиду после конца света :))

Re: Запись данных на SD c PC .

Добавлено: Пн мар 29, 2010 22:02:18
AI_Disable
Помогите разобраться с FAT16, застрял в самом начале. Во многих источниках(например, тут) говорится, что по адресам 0x1BE, 0xCE, 0x1DE, 0x1EE должны начинаться описания разделов. Я снял образ с мой отформатированной SD карточки и обнаружил, вместо обещанного, такой бред: "Remove disks or other media. Disk error. Press any key to restart". MBR прилагаю:
Изображение

Re: Запись данных на SD c PC .

Добавлено: Пн мар 29, 2010 22:23:53
NiTr0
AI_Disable писал(а):MBR прилагаю]
Это не MBR. Это - бутблок раздела с фат16

Re: Запись данных на SD c PC .

Добавлено: Пн мар 29, 2010 22:49:20
AI_Disable
Чёт совсем запутался. Если это не MBR, то где она тогда? И почему указанные мною выше адреса попали на область бутблока?