• MultIfleX (24.01.12 07:05) [0]
    Доброго времени.
    Собрал некое устройство, пишущее и читающее данные на SD/SDHC  без использования FAT... из этого появляется задача - необходимо производить RAW чтение и запись на ПК. Пробывал так:
    hDevice := CreateFile('\\.\X:',  GENERIC_ALL,          //
                                                 FILE_ANY_ACCESS, nil,
                                                 OPEN_EXISTING, 0, 0    );
    ....
    if not DeviceIoControl( hDevice,FSCTL_LOCK_VOLUME ,NIl,0,
                         nil, 0, btsIO,nil) then ...

     if not DeviceIoControl( hDevice,FSCTL_DISMOUNT_VOLUME ,NIl,0,
                         nil, 0, btsIO,nil) then ......
    ...



    затем уже

    SetFilePointerEx(hDevice,0,NIL,FILE_BEGIN);
    ReadFile, WriteFile.....



    Появляются следующие проблемы:
    1. На карте может содержаться более одного раздела? В таком случае, я не буду иметь доступ ко всей карте.. Как тут быть?
    2. Открывая девайс через
    hDevice := CreateFile('\\.\PHYSICALDRIVE#',...

    , примонтированный раздел (G:,F:...) так-же не даст мне записывать в произвольную область карты, отмонтировать его у меня не получается..
    3. Если раздел все же один, и карта уже в картридере ПК, логично что ОС покажет диалог "диск не отформатирован".. есть ли способ, используя который я мог бы узнать о появлении диска в системе, определять - нужный ли это мне диск, и избежать появления данного диалога?

    WinXP,Win7, DelphiXE2
  • MultIfleX (24.01.12 08:05) [1]
    Плюсом, сейчас обнаружил, что WM_DEVICECHANGE не приходит, если карт-ридер уже был подключен к ПК, а SD вставили позже... засада..
  • QAZ (24.01.12 10:23) [2]

    > необходимо производить RAW чтение и запись на ПК

    длянах?
  • MultIfleX (24.01.12 11:02) [3]

    > длянах?

    Это к сути вопроса не относится. Прибор достаточно сложный, требует больших объемов памяти для хранения различного рода данных. Объясню чтобы было понятно - длязах.
  • QAZ (24.01.12 14:18) [4]

    > Объясню чтобы было понятно

    ну как хош
  • megavoid © (24.01.12 14:27) [5]
    может быть, заставить прибор в начало карты писать самый примитивный фат (может даже с предвычисленными значениями всех полей), а потом уже те самые raw данные?
  • MultIfleX (24.01.12 20:42) [6]

    > ну как хош

    Ответ многогранен как и вопрос. Может переформулируете, чтоб донести суть?

    > может быть, заставить прибор в начало карты писать самый
    > примитивный фат (может даже с предвычисленными значениями
    > всех полей), а потом уже те самые raw данные?

    идея неплоха, рассмотрю обязательно. Просто используемый контроллер достаточно простой, и ресурсов на обработку файловой системы не найти... Использовать более дорогостоящее железо не представляется возможным. На самом деле на SD пишется подробный протокол работы, и очередь необработанных пользователем сообщений, а так же служебные данные о конфигурации среды, в которой предполагается работа.
  • MultIfleX (25.01.12 12:46) [7]
    Записал образ загрузочной дискеты, получил карту на 1.44 Мб. Вроде бы и ничего, но теперь при открытии \\.\Х: запись в области, лежащие за "границами" ФС недоступна... я конечно могу на время записи  сохранить ФС куда-либо, затем записать что необходимо, и восстановить как было..... но это попахивает одноколесным велосипедом без сидения... и педалей....
  • Inovet © (25.01.12 13:31) [8]
    > [6] MultIfleX   (24.01.12 20:42)
    > Просто используемый контроллер достаточно простой, и ресурсов
    > на обработку файловой системы не найти...

    FAT просто устроена, если доступ к диску монопольный, а он такой и будет на контроллере, то никакие там особые ресурсы не нужны. Пиши последовательно в кластеры и в табицы FAT тоже последовательно, может даже с каким-нибудь интервалом записанных кластеров для уменьшения количества циклов записи. Т.е. сразу файл большого размера создал и всё, потом только в область данных пишешь подряд.
  • brother © (25.01.12 14:52) [9]
    > пишущее и читающее данные на SD/SDHC  без использования
    > FAT


    значит ты пишешь данные на физическое устройство? если да - то никаких логических дисков там нет и быть не может, ибо, как ты сам сказал, файловая система там отсутствует...
    следовательно:
    в первых секторах физического устройства никто не мешает записать любую метку, например: MYFAT?
    далее, при появлении нового физ устройства, никто не помешает прочитать эти сектора, и если там наша метка, значит и наша карта?! а дальше... дело техники))))
  • brother © (25.01.12 14:54) [10]
    зы. если уж работаешь с физическим устройством, то логику (в частности файловую или другу систему) реализуешь только ты сам...и не надо тут примешивать стандартный фат итп...
  • MultIfleX (25.01.12 16:23) [11]

    >  если уж работаешь с физическим устройством, то логику (в
    > частности файловую или другу систему) реализуешь только
    > ты сам.

    Все верно, логика реализована и работает.


    > в первых секторах физического устройства никто не мешает
    > записать любую метку, например: MYFAT?

    да, в первом секторе находится заголовок с разметкой, где какие данные на флеш писать.

    Наверно все же я как то не так выразился... Попробую перезадать вопрос иначе.
    Проблема в том, что винды сразу назначают букву диску, и предлагают пользователю его отформатировать. Мне хотелось избежать этого, + узнать момент появления моего диска в системе. В случае встроенного картридера (к примеру их сейчас ставят на место старого доброго FDD), раздел всегда висит, даже если карта не вставлена. Есть конечно вариант постоянно проверять все REMOVEABLE и новые разделы, но это какое-то кривое решение...
  • MultIfleX (25.01.12 16:26) [12]

    > проверять все REMOVEABLE и новые разделы, но

    ерунду написал..
    ... проверять все REMOVEABLE и вновь появляющиеся в системе диски....
  • brother © (25.01.12 18:37) [13]
    тогда я не понял про:

    > На карте может содержаться более одного раздела

    понятие раздел - это логическое представление диска!
    > но теперь при открытии \\.\Х: запись в области, лежащие
    > за "границами" ФС недоступна

    код открытия и попытки доступа к секторам показывай...
  • CRLF (25.01.12 20:00) [14]
    можно извратнуться, создать один раздел с файловой системой, второй с whatever-you-want, винда не умеет работать с двумя и более разделами на флэшках, картах, etc. Из первого сектора определяешь наличие второго раздела и его смещение относительно начала дискового устройства, дальше дело техники.
  • QAZ (25.01.12 20:58) [15]

    > если да - то никаких логических дисков там нет и быть не
    > может, ибо, как ты сам сказал, файловая система там отсутствует...

    логические диски\разделы не имеют отношения к файловой системе вообще
    вопрос в другом, если чел сделал сам устройство для конкретной задачи,то с какого там должна оказаться карта с разделами? wtf?

    > Проблема в том, что винды сразу назначают букву диску, и
    > предлагают пользователю его отформатировать. Мне хотелось
    > избежать этого

    система предлагает форматировать только видимые разделы,если разделу поставить метку "скрытый" никто ничего не увидит,не спросит

    > узнать момент появления моего диска в системе. В случае
    > встроенного картридера (к примеру их сейчас ставят на место
    > старого доброго FDD), раздел всегда висит, даже если карта
    > не вставлена.

    это не проблема винды,это проблема устройства которое должно сообщить винде что в него чтото вставили
  • brother © (26.01.12 06:02) [16]
    > логические диски\разделы не имеют отношения к файловой системе
    > вообще

    в этом контексте я имел ввиду Partition Table
  • brother © (26.01.12 06:05) [17]
    автору: http://www.lib.csu.ru/DL/bases/prg/frolov/books/bsp/v01b/ch2.htm
    может пригодится при анализе вставленного флеш устройства....
  • MultIfleX (26.01.12 07:12) [18]

    > вопрос в другом, если чел сделал сам устройство для конкретной
    > задачи,то с какого там должна оказаться карта с разделами?
    >  wtf?

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


    > это не проблема винды,это проблема устройства которое должно
    > сообщить винде что в него чтото вставили

    Отлично! Вот он и вопрос - что же такое сообщается проводнику(aka Explorer) что он через мгновение после вставки диска уже предлагает его форматнуть?


    > система предлагает форматировать только видимые разделы,
    > если разделу поставить метку "скрытый" никто ничего не увидит,
    > не спросит

    Тип раздела(смещение в описании раздела 04h) = 1Bh(Скрытый ФАТ32) ? Что имелось ввиду под "меткой" ?


    > можно извратнуться, создать один раздел с файловой системой,
    >  второй с whatever-you-want, винда не умеет работать с двумя
    > и более разделами на флэшках, картах, etc. Из первого сектора
    > определяешь наличие второго раздела и его смещение относительно
    > начала дискового устройства, дальше дело техники.

    Изза большого количества сообщений от различного числа пользователей, видимо потерялась суть,... Мне то как раз не хочется никакого ФАТ и прочего.. Мне достаточно того, что там вообще нет ни MBR ни всего остального, а просто тихо мирно лежат мои данные.. Мне надо чтоб винды не терроризировали флеш (предлагая ее форматнуть, чтоб патриотически настроеный дядя оператор, искренне желая лучшего, не нажал "форматировать" и не послал часть данных на покой) + самый простой способ определения "вновь вставленного" в картридер SD-флеша.

    Просто рассматривая вариант с ФС в начале карты, а затем "то-что-я-хочу":
    К примеру, сейчас расположил десятимегабайтный ФАТ в начале. Теперь:
    1. Открывая '\\.\X:' не получаю доступа к областям вне ФАТ раздела (тоесть ограничен этими 10 Мб)
    2. Открывая '\\.\PHYSICALDRIVE#' я не могу записывать никуда кроме 0 сектора + читать дальше чем распологается FAT.

    Если я затираю первые сектора в начале карты - ФС карты не определяется, и я получаю доступ через '\\.\X:' или '\\.\PHYSICALDRIVE#' ко всей памяти карты. Казалось бы то что нужно. Но опять это гребаное предложение отформатировать. Что с ним сделать, как успеть перехватить?

    Кто просил код открытия. К примеру вот этот кусок тестового кода. Само открытие по сути как и везде:

    hDevice := CreateFile(  '\\.\L:', GENERIC_ALL,
                               FILE_ANY_ACCESS, nil, OPEN_EXISTING, 0, 0 );
       if hDevice <> INVALID_HANDLE_VALUE then
       try
         // lock drive
         DeviceIoControl( hDevice,FSCTL_LOCK_VOLUME ,NIl,0, nil, 0, btsIO,nil) ;
       
         for i := $00 to $7FFFFF do
          begin
            FileSeek( hDevice, i shl 9 , FILE_BEGIN );
            ....
            ReadFile( hDevice,  buf,   512,btsIO,NIL);
            ....
            WriteFile( hDevice,  buf,   512,btsIO,NIL);
            ....
         End;

  • MultIfleX (26.01.12 07:18) [19]

    > автору: http://www.lib.csu.ru/DL/bases/prg/frolov/books/bsp/v01b/ch2.
    > htm
    > может пригодится при анализе вставленного флеш устройства.
    > ...

    Спасибо. Я когда искал информацию о разборе FAT, в сети навалом fat.c и fat.h реализаций для различного рода МК. Но я пришел к выводу, что использование ФС ощутимо замедляет работу девайса, точнее объем поступающих данных начинает превышать объем обрабатываемых (в критических ситуациях), и я отказался от ее использования.
  • brother © (26.01.12 07:35) [20]
    > и я отказался от ее использования.

    это может пригодиться, для ручной создания структуру partition table и fat (например раздел на 1мб ;) )
  • MultIfleX (26.01.12 08:38) [21]

    > это может пригодиться, для ручной создания структуру partition
    > table и fat (например раздел на 1мб ;) )

    Да, спасибо =) В итоге меня сейчас все устраивает, за исключением возможности доступа пользователя к моему диску. Кстати, не в курсе, как форсируется демонтаж диска при форматировании (когда он пишет, что все дескрипторы стали не верны), ибо когда я пробую блокирую диск при открытых файлах, он не поддается (DeviceIoControl( hDevice,FSCTL_LOCK_VOLUME ,NIl,0, nil, 0, btsIO,nil)  возвращает FALSE)
  • Slym © (26.01.12 09:20) [22]
    я бы форматнул под стандартную фат и создал один файл размером в весь раздел
    нашел его смещение и писал в обход фат
  • MultIfleX (26.01.12 09:30) [23]
    Попробывал сделать следующее:
    Просматриваю все REMOVEABLE диски на появление "моего RAW" , как только появляется - сразу блокирую ( DeviceIoControl с FSCTL_LOCK_VOLUME ). Все, теперь все вроде бы хорошо. Буду держать его заблокированным пока не выполню все операции и пользователь не извлечет диск. При попытках доступа ( в том числе форматирования средствами ОС) - выдается ошибка, что недостаточно привелегий.

    Интересно вот что: если в процессе записи, извлечь флешку из картридера, появляется стандартное сообщение ОС об ошибке - НЕВЕРНЫЙ ТОМ(отмена,повтор,продолжить)... если вставить ее назад и нажать ПОВТОРИТЬ то запись продолжется. При этом, блокировка с диска не слетает.

    Думаю я найду как захлопнуть это окно о "неформатированном диске"... Появление новых дисков отслежу по WM_DEVICECHANGE, ну а заранее примонтированные разделы картридера, в которые не вставили карту думаю придется опрашивать с интервалом...
  • RWolf © (26.01.12 09:38) [24]
    эх...
    ну ведь форматнут эту флэшку, обязательно форматнут,
    вставят в дисковод и ответят «да» на запрос форматирования, а чего такого, не читается же.
    прикрутить фат к контроллеру — дело пяти минут гугления, пары часов изучения библиотеки и килобайта ОЗУ под пару кластеров.
  • Slym © (26.01.12 09:55) [25]
    зачем полностью фат реализовывать?
    нужно при старте найти начало файла (смещение) с нужным именем
    а далее писать по этому базовому смещению
    но это при жестком ограничении что файл один и максимального размера

    читаться будет под любой осью с любыми правами обычными средствами  чтения файла
  • Slym © (26.01.12 10:09) [26]
    или вапще фат не реализовавать а искать сигнатуру файла аля фпсевдокоде
    offset:=Pos(hDevice,"//тут начало файла");
    SetFilePointerEx(hDevice,offset,NIL,FILE_BEGIN);
    WriteFile



    где в Pos прыгаем по 512 байт (или размер сектора) и читаем первый x байт и сравниваем с сигнатурой
  • QAZ (26.01.12 11:13) [27]

    > Покупаю я новую карту, мне нужно записать на нее конфигурацию
    > для нормальной работы девайся, я вставляю ее в ридер, вставляю
    > в ПК..... а оказывается что она продается с ФС на борту.

    запускаеш любой менеджер разделов,удаляеш нахрен все разделы .... и о чудо!!!

    > Тип раздела(смещение в описании раздела 04h) = 1Bh(Скрытый
    > ФАТ32) ? Что имелось ввиду под "меткой" ?

    просто отобрать у раздела букву

    > Отлично! Вот он и вопрос - что же такое сообщается проводнику(aka
    > Explorer) что он через мгновение после вставки диска уже
    > предлагает его форматнуть?

    проводник вообще не при чем он также получает WM_DEVICECHANGE как и все
    форматировать винда предлагет если есть диск с разделами с назначеной буквой,но с неподдерживаемым форматом фс
  • CRLF (26.01.12 11:28) [28]

    > Мне надо чтоб винды не терроризировали флеш (предлагая ее
    > форматнуть, чтоб патриотически настроеный дядя оператор,
    >  искренне желая лучшего, не нажал "форматировать" и не послал
    > часть данных на покой) + самый простой способ определения
    > "вновь вставленного" в картридер SD-флеша.
    Они и не будут. Ну будет дядя оператор видеть 4-гиговую флэшку как 256-меговую (например), а остальные 3.75 гига в проводнике/файловом менеджере видно не будет. Если дядя оператор отформатирует "видимую" часть диска, твоим данным в остальной части карты это не повредит. Если же дядя оператор через diskpart возьмётся вручную редактировать таблицу разделов, то ты никакими своими ухищрениями ему не помешаешь.
  • MultIfleX (26.01.12 12:34) [29]

    > просто отобрать у раздела букву

    Согласен, не вопрос! Но если не доступен ПК на котором будет все это исполняться? написать реализацию "отбора буквы" (как к примеру в управлении дисками), боюсь мне не под силу.

    > Если же дядя оператор .....то ты никакими своими ухищрениями ему
    > не помешаешь.

    Я хотел бы сделать защиту от неосторожности. От дурака защиту изобретать - неблагодарное дело, убеждался не раз =) поэтому полностью согласен.

    > он также получает WM_DEVICECHANGE как и все

    в том то и дело, что WM_DEVICECHANGE не приходит, если картридер уже был подключен (в этот момент получаем сообщение), а карту вставили уже значительно позже. Я писал об этом выше. Поэтому и привел этот проводник в пример, он то ведь узнает как то...
  • CRLF (26.01.12 12:45) [30]

    > Я хотел бы сделать защиту от неосторожности.
    Так чем плоха защита "вот тебе маленький раздел FAT, что бы ты с ним не делал, служебные данные ты не повредишь"?
  • Inovet © (26.01.12 13:04) [31]
    > [19] MultIfleX   (26.01.12 07:18)
    > Но я пришел к выводу, что использование ФС ощутимо замедляет
    > работу девайса

    Ты ошибаешься. Читай выше мой пост об этом. Прочитать загрузочный сектор, там указано начало корневого раздела и начало FAT. Создать в корне запись о файле сразу на максимальный объём, прописать в FAT последоватьность с приращением +1, всё. Дальше пишешь подряд в область данных, как тебе и хочется.

    Если файл уже создан неизвестно где и как, то в общем случае немного сложнее, но такой универсальности и не требуется в задаче.

    Зато вставил такую флешку в картридер и сразу у тебя готовый файл с данными без всяких дополнительных примочек по считыванию.
  • Inovet © (26.01.12 13:07) [32]
    > [22] Slym ©   (26.01.12 09:20)
    > я бы форматнул под стандартную фат и создал один файл размером
    > в весь раздел нашел его смещение и писал в обход фат

    Тоже вариант. Только нужна гарантия созания этого файла в непрерывной последовательной области, лучше саздать на контроллере.
  • Inovet © (26.01.12 13:11) [33]
    > [23] MultIfleX   (26.01.12 09:30)
    > Думаю я найду как захлопнуть это окно о "неформатированном диске"...

    и т.п. просто от нежелания или боязни разобраться, отсюда и попытки обойти стандартое поведение, отрезать, заткнуть, запретить, вместо того чтобы сделать как положено.
  • icWasya © (26.01.12 14:24) [34]
    Как вариант
    Просят отформатировать - отформатируй.
    Затем создай один файл размером со всё доступное место на диске.
    И только в него потом пиши-читай.
  • Inovet © (26.01.12 14:30) [35]
    > [34] icWasya ©   (26.01.12 14:24)
    > Затем создай один файл размером со всё доступное место на диске.

    Больше 4 ГБ не получится.
  • RWolf © (26.01.12 14:40) [36]
    мне решительно непонятна всеобщая боязнь полноценной поддержки FAT32 в этом треде.
    читать сектора SD/SDHC, значит, ресурсы у контроллера есть, а кластеры FAT — нет?
  • QAZ (26.01.12 15:33) [37]

    > в том то и дело, что WM_DEVICECHANGE не приходит, если картридер
    > уже был подключен (в этот момент получаем сообщение), а
    > карту вставили уже значительно позже. Я писал об этом выше.
    >  Поэтому и привел этот проводник в пример, он то ведь узнает
    > как то...

    проводнику приходит и при втыке и при вытыке карты - у меня тоже есть картридер ;)
  • MultIfleX (27.01.12 06:14) [38]

    > проводнику приходит и при втыке и при вытыке карты - у меня
    > тоже есть картридер ;)

    А мне не приходит, вот жеж.....

    > мне решительно непонятна всеобщая боязнь полноценной поддержки
    > FAT32 в этом треде.
    > читать сектора SD/SDHC, значит, ресурсы у контроллера есть,
    >  а кластеры FAT — нет?

    Попробовать стоит, вдруг получится ... случай с непрерывным файлом в принципе подходит.

    > Тоже вариант. Только нужна гарантия созания этого файла
    > в непрерывной последовательной области, лучше саздать на
    > контроллере.

    Да, буду пробовать...

    > и т.п. просто от нежелания или боязни разобраться

    это не в данном случае. На все есть свои сроки, целесообразность и ограничения. Рассматриваются и изучаются все варианты.
  • MultIfleX (27.01.12 09:43) [39]
    Использовал Petit FAT, пока полет нормальный, все читается и пишется. Буду разбираться дальше. Всем большое спасибо за советы.
    Еще вопрос - есть возможность реализовать ""гарантированное" занятие файлом на карте непрерывного пространства"? Если я ее форматнул, и следом записал два/три больших файла скажем по пол гигабайта, как мне узнать, непрерывно ли они расположены? Я не говорю про контроллер, я говорю про Win.
  • Inovet © (27.01.12 10:08) [40]
    > [39] MultIfleX   (27.01.12 09:43)
    > Если я ее форматнул, и следом записал два/три больших файла
    > скажем по пол гигабайта, как мне узнать, непрерывно ли они
    > расположены? Я не говорю про контроллер, я говорю про Win.

    Вообще-то должны бы последовательно лечь, но какое там у Вин расположение звёзд в тот момент будет неизвестно. Так что я бы не полагался на её настроение. Проверить чтением таблиц(ы) FAT, может какой другой способ, утилита есть.

    Всё имхо.

    Ещё момент. У пользователя могут быть установлены какие-нибудь дефрагментаторы диска, которые могут сами или с его согласия начать оптимизировать флешку. Например Perfect Disk с настройками по умолчанию может так делать. Так что после вставки флешки в комп файл уже может оказаться НЕпоследовательно расположен.

    Но если НЕ на контроллере гарантированно последовательный создавать, то на контроллере читать FAT и по нему уже совсем правильно записывать в цепочки кластеров файла, не закладываясь на его последовательое расположение. Что тоже не потребует каких-то сверресурсов.
  • MultIfleX (27.01.12 11:23) [41]

    > Что тоже не потребует каких-то сверресурсов.

    Уже проверил, при максимальной расчетной нагрузке не успевает позиционироваться. Все в притык)

    Про дефрагментаторы - я бы посоветовал удалить дефрагментатор, дефрагменирующий непрерывный файл ;)
  • Inovet © (27.01.12 12:11) [42]
    > [41] MultIfleX   (27.01.12 11:23)
    > Про дефрагментаторы - я бы посоветовал удалить дефрагментатор,
    > дефрагменирующий непрерывный файл ;)

    Он его может начать перемещать, чтобы освободить кусок место под другие - обычное дело - а пользователь его остановит в средине процесса. И потом посоветовать ещё не значит, что такого не будет.
  • RWolf © (27.01.12 12:11) [43]
    непрерывный файл вполне может оказаться фрагментированным после дефрагментации, если на разделе мало свободного места.
  • Inovet © (27.01.12 12:18) [44]
    > [41] MultIfleX   (27.01.12 11:23)
    > Уже проверил, при максимальной расчетной нагрузке не успевает
    > позиционироваться. Все в притык)

    Странно это. По памяти ресурсов больше надо на размер сектора 512 байт вроде если не читать с запасом, по скорости ну чтение сектора из FAT иногда добавится, в самом худшем случае на запись каждого кластера, сколь он там 8192 допустим байта, одно чтение 512 байт. Это при последовательной записи.
  • miek (27.01.12 13:16) [45]
    я делал так: устройство при подключении флешки проверяет, "наша" или "не наша" (см.ниже). если не наша - тут же форматирует ее. Способ предельно простой (тут сверху уже подсказывали): один раздел, один том, один файл размером на весь свободный объем, фиксированная метка диска и тома. Файловая система только FAT16. Соответственно, обращение к флешке предельно упрощается + можно читать содержимое файла средствами ОС.
  • Slym © (27.01.12 13:52) [46]
    посмотрел Petit FAT
    FATFS fs;   //FatFs объект
    FRESULT res;   //Результат выполнения
    DWORD sect;
    res=pf_mount(&fs);
    res=pf_open("/Data.txt");
    res=pf_lseek (0);
    sect=fs->dsect;


    далее выбрасываем Petit FAT и работаем напрямую используя инфу из fs т.е. sect из последней строчки

    как расположить файл последовательно уже другая легко решаемая задача
  • MultIfleX (27.01.12 14:04) [47]

    > По памяти ресурсов больше надо на размер сектора 512 байт вроде ...

    да, но когда у тебя 8 битный контроллер с 4 кб ОЗУ, дающий в лучшем случае 16MIPS ... не разгуляешься. Менять на более мощный и дорогой не вижу смысла - с основными задачами справляется.


    > устройство при подключении флешки проверяет, "наша" или "не наша"

    если не наша - девайс не должен работать, ибо опорных данных на флеше нет. Уже реализовал такого же смысла проверку =). Форматировать и записывать начальные данные буду на ПК. Проверить данные после записи на последовательность я могу. Обнаружение начального сектора файла и чтение/запись на девайсе со смещением уже отладил.

    Всем спасибо большое за помощь.
  • MultIfleX (27.01.12 14:05) [48]

    > далее выбрасываем Petit FAT и работаем напрямую используя
    > инфу из fs т.е. sect из последней строчки

    да, все так и сделал ;)
  • QAZ (27.01.12 14:57) [49]

    > А мне не приходит, вот жеж.....

    буквально седня утром внедрил себе в софт данную плюшку ибо актуально :)
  • MultIfleX (27.01.12 16:26) [50]

    > буквально седня утром внедрил себе в софт данную плюшку
    > ибо актуально :)

    И как отслеживаешь вставку флеша в ридер?
  • QAZ (27.01.12 17:36) [51]

    > MultIfleX   (27.01.12 16:26) [50]

    через WM_DEVICECHANGE :P
  • QAZ (27.01.12 17:41) [52]
    кстати, в гугле решения для этого случая не найдеш
  • brother © (27.01.12 21:13) [53]
    так показывай код!
  • MultIfleX (29.01.12 17:45) [54]

    > через WM_DEVICECHANGE :P

    Как обычно, осмысленный, несущий свет и просвещение пост...

    Однако, пока вы плюшками баловались, нашел вариант - SHChangeNotifyRegister ;) Все, разрешите откланяться. Вопросов более нет.
Есть новые Нет новых   [134430   +4][b:0.001][p:0.003]