tmpdisk - менеджер виртуальных дисков

Work with drives, directories, files
  • Я буду реализовывать получение информации о файловой системе на третьем этапе процесса, описанного здесь: viewtopic.php?f=35&t=1854

    Leency
    Уверен ли ты, что обновил tmpdisk.obj? Насколько стабильно проявляется эффект? Какой размер диска и размер записываемых данных?
    Сделаем мир лучше!
  • Аналогично, ошибка в форматировании внутри tmpdisk.obj, только теперь в FAT32 и с формированием немного некорректной структуры. r3305 уже здесь.
    Сделаем мир лучше!
  • Об ошибке "слишком много виртуальных дисков" tmpdisk сигнализирует через @notify. Но если диск не удалось создать, например, из-за нехватки памяти, то никакой видимой сигнализации нет - нажатие на кнопку "Добавить" не приводит ни к каким видимым последствиям.
    Сделаем мир лучше!
  • Я хоть и говорил, что не буду комиттить свои изменения, но существование этой программы в т.ч. твоя заслуга (не было бы драйвера - небыло бы и GUI), плюс я восхищён твоим перфекционизмом в исправлении ошибок драйвера.
    Встречайте #3306 - добавлено вывод ошибок через notify, уменьшено потребление программой памяти с 1Мб до 2 Кб, вывод в окно размера свободной оперативной памяти, небольшое обновление кода.
    Из хаоса в космос
  • New SVN revision #3401 by yogev_ezra in /programs/cmm/tmpdisk: tmpdisk memory allocation is in sectors, but displayed free RAM is in MB (Исправил вывод в окно размера свободной оперативной памяти). Сравниваем показания GMON и TMPDISK до и после фикса (GMON в KB, TMPDISK - MB).

    До:
    Spoiler:
    EBOX3.png
    EBOX3.png (70.94 KiB)
    Viewed 4615 times
    После:
    Spoiler:
    EBOX4.png
    EBOX4.png (66.06 KiB)
    Viewed 4615 times
    Заодно исправил индусский код (вычисление размера свободной памяти дважды в двух соседних строчках), вследствие чего размер упакованного бинарника уменьшился на 43 байта (4047 вместо 4090) :wink:
  • За фикс спасибо. 4090 -> 4047 не даёт никакого выгриша в секторах дискеты, потому подобная оптимизация несущественна. Всё же когда стал проще и логичней - это плюс.
    : Уголок любознайки: в своё время индусам платили не за часы работы или выполненные проекты, а за количество написанных строк кода. Тогда и начали появляться вот такие фрагменты кода, прозванные индусскими:
    [code]if (1==1) { рабочик код } else {а тут рубим бабло написав хоть 1000 строк ниочём }[/code]
    другой вариант происхождения - это ответ одного индуса на форуме - как узнать сколько секунд пройдёт с сегодняшнего дня текущего времен до 7.00 завтрашнего дня:
    [code]
    int sek;
    loop
    {
    sek++;
    if (CurTime()==NeedTime()) break;
    }
    printf(sek);
    [/code]
    То есть запустил программу и ушёл пить чай...
    Из хаоса в космос
  • Если я не ошибаюсь насчёт того, что данные записанные по определённому физическому адресу RAM сохраняютя после перезагрузки(если их целенаправленно не стирать) или ресета, то эту особенность можно использовать для вытаскивания логов зависшей системы: работает себе board, пишет потихоньку логи и тут пользователь запускает скажем аудиоплеер, грузящий драйвер звуковухи который в свою очередь вешает систему и единственный способ достать ЧАСТЬ логов это фотоаппарат. Если board будет писать на такой tmpdisk часть содержимого которого не будет обнулятся при перезагрузке или ресете, то можно будет при следующей удачной загрузке достать этот лог.
  • debug_direct_print = 1 при компиляции ядра - и выводятся ВСЕ логи. При зависании системы board, будучи обычным приложением, может не успеть даже прочитать несколько последних сообщений, не говоря уже о том, чтобы что-нибудь с ними сделать.
    Сделаем мир лучше!
  • Не удаётся скопировать в корень "/tmp1/1" более 128-ми папок\файлов. Возвращается "диск заполнен". Если не ошибаюсь, в FAT12\FAT16 ограничение 256 записей в корневом каталоге.
    Размер диска был 24 Mb.
    svn3758

    Например, эти пустые папки:
    empty_folders.7z (500 Bytes)
    Downloaded 192 times
  • Во-вторых, не 256, а столько, сколько помещается в область, выделенную под корневой каталог при форматировании. tmpdisk всегда выделяет 16 секторов, что действительно даёт 256 записей, но на стандартной дискете секторов всего 12.
    Во-первых, слово "записей" точное - именно записей, а не файлов/папок. Пробелы не могут входить в короткое имя файла, поэтому для "Folder 1" создаётся две записи - короткое имя типа FOLDER~1 и длинное имя, которое пока ещё умещается в одну запись - поэтому одна такая папка расходует две записи. Диагностика "диск заполнен" после 256/2 таких папок - совершенно точное поведение, и не стоило ради этого меня отвлекать.
    Сделаем мир лучше!
  • CleverMouse, спасибо, теперь понятно.
    У меня есть раздел FAT16, и было не понятно, почему на него копируется, а на tmp — нет.
    А у этого раздела оказалось "Root directory capacity: 512 entries in 32 sectors".
  • Virtual Disk Manager 0.46
    - добавлено поле в GUI для указания размера диска

    Известные проблемы:
    - конфликт цифровых и функциональных клавиш (при нажатии на 3ку, происходит попытка создания диска)
    - курсор в edit'е не перемещается при помощи стрелок
    to infinity and beyond
  • Ах да, большое спасибо Leency, без его советов и подсказок, я бы еще долго со всем этим разбирался.
    to infinity and beyond
  • Хорошо, осталось только вычистить все баги:
    - нерабочие клавиши влево вправо
    - добавление диска по клавише 3
    - недочёт: текст "Размер" и кнопка "Добавить" должны находиться на одной линии по левому краю

    Подсказываю решение второй проблемы: переназначить добавление с клавиши F2 на клавишу Ins (Insert).
    Из хаоса в космос
  • Who is online

    Users browsing this forum: No registered users and 4 guests