Перейти к содержанию
    

kernel32ddl

Свой
  • Постов

    44
  • Зарегистрирован

  • Посещение

Весь контент kernel32ddl


  1. ADM5120

    Спасибо очень познавательная статья.
  2. ADM5120

    Уважаемые товарисчи не могли бы вы подсказать с чего начать изучение данного зверя? Существуют ли эмуляторы этого процессора, где можно было бы тестить Линукс под этот проц (если я не ошибаюсь "midge")? И вообще существует ли какая-нибудь литература на эту тему (да еще бы и на русском :) )?
  3. Ясно, тема хостов действительно для меня диаметрально противоположна... Но тем не менее поздравляю вас с успехом :) !
  4. Уточните пожалуйста каким образом вы "посылаете" команду на чтение блока? Каким образом вы определили что все выполняемые вами команды корректны? Какую программу используете для этого? Поподробней пожалуйста. Я тоже зимась аналогичной темой "TMS + flash = Mass Storage", может чем нибудь смогу помочь.
  5. уважаемый jhoo не подскажите что это за программа и где ее можно взять?
  6. Итак... Первым делом пришлось фарматировать флэш средствами винды под ФАТ16. Винда создала там таблицу разделов, мбр и собственно сам раздел. Но тут меня ожидал БАЛЬШОООЙ облом. После полного копирования всего вышеописанного на флэшь.... НИЧЕГО НЕ ИЗМЕНИЛОСЬ!!! Как не работало, так и не стало работать. И тут я обратил внимание на одну проблему, значение которой я поначалу не придал. Ответ винде от моего устройства приходол только тогда, когда винда повторно отправляла команду! А все из-за того, что после передачи ей данных я не отправлят пустые пакеты (SEND_ACK и GET_ACK). Но на этом проблемы не закончились... Некоторые ответы на команды иногда все равно отправлялись только со второго раза. И возникла некая несогласованность. Объясняю(пример): Приходит команда(25), в ответ на команду должны передаться данные (data25), затем ответ на команду. Данные сразу не передаются и команда принимается еще раз и данные со второго раза передаются. Затем приходит другая команда и data25 опять передаются. Вобщем бардак. ЗНАЮЩИЕ ЛЮДИ БОЛЬШАЯ ПРОСЬБА! ОБЪЯНИТЕ МНЕ ДУРАКУ В КАКИХ СЛУЧАЯХ НАДО ОТПРЯВЛЯТЬ SEND_AKC и GET_ACK?
  7. На флэшках, структуру которых мне удалось посмотреть MBR и таблицы нет. Идет сразу раздел со своей загрузочной областью. Объясняется это наверно тем, что в ней просто нет неоходимости - раздел-то на флэшке только один. Наконец-то удалось раздобыть флэшину на 128 мб :cheers: , обнаружил много несоответствий. Как только исправлю все, сообщу о результатах.
  8. Забыл добавить еще одну важную ссылку, при описании документации www.rs232.ru. Там есть спецификация на USB по русски.
  9. one_man_show, спасибо за столь лесную похвалу :) . Что такое USBIO к сожалению понятия не имею :( , лично я делаю своё детище на TMS5509a, в Code Composer Studio от Texas Instrument. Очень помог пример реализации USB устройства на сайте c5000.spectrumdigital.com. Практически 70% всего кода, необходимого для реалиции устройства уже есть в этом примере, оставалось только надстроить его до необходимого класса (добавить нужные команды и т.п.). Вообще разработчики TI сделали хорошую абстракцию от аппаратной части (CSL библиотека USB), никаких портов программировать не надо, берешь функцию, указаваешь ей буфер с данными, номер конечной точки и вперед - данные передаются! Все очень просто. Для снятия протоколов обмена пользуюсь USB Monitor и SnoopyPro. На последний ваш вопрос, ответить не могу - ничего в этом не смыслю :smile3046:.
  10. По ходу дела возник такой вопрос: какую файловую систему лучше использовать для флэшены? Гворят что ФАТ32 не очень хороша для нее...
  11. Значится так: Первым делом идем на usb.org USB Device Сlass Specification. В секции Mass Storage качаем Mass Storage Overview 1.2 Mass Storage Bulk Only 1.0 Mass Storage Control/Bulk/Interrupt (CBI) Specification 1.1 Mass Storage UFI Command Specification 1.0 Mass Storage Bootability Specification 1.0 В принципе это самое важное из всей документации на эту тему, в Mass Storage UFI Command Specification 1.0 можно найти примерный набор команд. Подчеркиваю! примерный. Все дело в том, что к сожалению до сих пор нет никакого стандарта на обмен между флэшиной и компом. 98% этих команд, беруться из SCSI Primary Commands -2 (SPC-2). За этой спецификацией идем на t10.org, в частности в раздел Architecture. Эта спецификация очень большая (по количеству страниц), в ней пригодиться только малая часть, для более подробного изучения команд, описанных в Mass Storage UFI Command Specification 1.0 . С сайта t10.org обязательно скачиваем RBC Reduced Block Commands. Лично я писал свои команды именно по этой спецификации. НО! ни в коем случае не описывайте в дескрипторах свое устройство как RBC. В винде нет поддержки RBC! Ваше усройство просто-напросто не будет определяться как сменный накопитель. Нас эта спецификация интересут только в плане команд. Строго говоря все-таки существут примерно-стандартный набор команд которые должно поддерживать устройство. Вот их список: 0x00 - TEST UNIT READY 0x03 - REQUEST SENSE 0x04 - FORMAT UNIT 0x12 - INQUIRY 0x15 - MODE SELECT 0x16 - RESERVE 0x17 - RELEASE 0x1A - MODE SENSE(6) 0x1B - START STOP UNIT 0x1E - MEDIUM REMOVAL 0x23 - READ FORMAT CAPACITY 0x25 - READ CAPACITY 0x28 - READ 0x2A - WRITE 0x2F - VERIFY 0x35 - SYNCH CACHE 0x3B - WRITE BUFFER 0x5A - MODE SENSE(10) Этот список довольно исбыточен, т.к. при использовании одних команд другие команды становятся не нужными. Подробнее об этом написано в RBC Reduced Block Commands, правда не знаю с какой достоверностью можно использовать эту спецификаю (если б у меня совем не было проблем я бы говорил более уверенно :) ), поэтому не советую уж больно сильно увлекаться ей. Почему - было сказано выше. И естественно советую внимательно изучить спецификацию по USB (особенно главу про Protocol Layer), благо в инете встречаютя описания на русском.
  12. 64-ый сектор - это оказывается первый сеткор второй дорожки. Узнал я это при помощи программки flashnul. Она выдала следующее: Disk g: (UNC name: \\.\g:) ------------------------------------------------------- DeviceIoCtrl & IOCTL_DISK_GET_DRIVE_GEOMETRY reports: Cylinders = 16 Tracks per cylinder = 255 Sectors per track = 63 Bytes per sector = 512 calculated disk size = 131604480 (125Mb) delta to near pow of two= 2613248 (2Mb) ------------------------------------------------------- GetDiskFreeSpaceEx() reports: function failed ------------------------------------------------------- Reading 0x0 (0b) error: Превышен таймаут семафора. Как я понимаю параметр Sectors per track это тот же BPB_SecPerTrk в блоке параметров биос загрузочной области. Откуда же интересно винда берет это значение, ведь этот параметр равен у меня 32? И вообще не понятна сама логика чтения, почему винда не читает все подряд, а после чтения бут сектра читает следующую дорожку? Хотелось бы услышать мнения по поводу того, как винда высчитывает из параметров бут сектора значения смещений скажем на ФАТ таблицу, рут и пр.
  13. Простите за ламерство :smile3046: , но это где?
  14. К сожалению он работает с жесткими дисками и только. :(
  15. С набором команд как раз-таки все впорядки данные передаются и принимаются без ошибок. Ответы на команды тоже коррекные, формируются согласно спецификации SCSI. Логическую адресацию устройство поддерживает, вопрос в том почему ни одна программа не хочет ее форматировать. И почему винда после чтения бут сектора кидается сразу читать 64-ый блок, а не начинает читать FAT, а затем root. Мне почему-то кажется, что я где-то допустил ошибку в параметрах биос, т.к. винда ведь не с потолка берет адрес 0x40h(64), скорее всего это адрес вычисляется согласно этим параметрам, и судя по аналогии(обмен виндой с другими флэшками) там винда пытается прочитать FAT таблицу. А вот где я допустил ошибку ума не приложу...
  16. Форматировать пробовал(после того как винда перестает флэшеку мутузить) графическая программа фрматирования не запускается вообще, а консольная выдает ошибку "ошибка функции такой-то (что-то вроде IOCTL или в этом духе)" (к сожалению точно не помню какой, нет возможности в данный момент посмотреть)
  17. При создании Usb flash диска (128мб) появились проблемы с его определением windows. Дела обстоят следующим образом: при подключении устройства windows загружает все необходимые драйвера, т.е. диск определяется как сменный носитель, появляется в проводнике (с этим проблем нет); а вот дальше начинаются странности. На флэше был создан раздел FAT16, при создании раздела руководствовался документацией по этой файловой системой. Блок параметров биос выглядит так: Смещение Название Размер Значение Описание 0 (0x0) BS_jmpBoot 3 EB 3E 90 Команда перехода на загрузчик ОС 3 (0x3) BS_OEMName 8 2B 58 64 68 39 49 48 43 (Xdh9IHC) Название и версия Windows 11 (0xB) BPB_BytsPerSec 2 00 02(512) Количество байтов в секторе (всегда 512) 13 (0xD) BPB_SecPerClus 1 04(4) Секторов на кластер всегда кратно степени двух 14 (0xE) BPB_RsvdSecCnt 2 01 00(1) Количество зарезервированных секторов перед первой FAT 16 (0x10) BPB_NumFATs 1 02(2) Количество таблиц FAT (всегда 2) 17 (0x11) BPB_RootEntCnt 2 B0 02(688) Количество элементов в корневом каталоге (максимальный предел) 19 (0x13) BPB_TotSec16 2 00 00 Общее число секторов (0 - если размер диска больше 32 Мб) 21 (0x15) BPB_Media 1 F8 Тип устройства: F0 - гибкий диск, F8 - жесткий диск с любой емкостью (Media дескриптор носителя) 22 (0x16) BPB_FATsz16 2 FA 00(250) Количество секторов на элемент таблицы FAT (число секторов в одной FAT) 24 (0x18) BPB_SecPerTrk 2 20 00(32) Количество секторов на дорожку 26 (0x1A) BPB_NumHeads 2 FF 00(255) Число головок 28 (0x1C) BPB_HiddSec 4 00 00 00 00 Количество скрытых секторов 32 (0x20) BPB_TotSec32 4 FF E4 03 00(255231) Общее число секторов (0 - если размер диска меньше 32 Мб) 36 (0x24) BS_DrvNum 1 80(128) Номер диска 37 (0x25) BS_NtRsvd 1 01 Зарезервировано для Windows NT 38 (0x26) BS_BootSig 1 29 Расширенная сигнатура (если 29h, то следующие поля актуальны) 39 (0x27) BS_VolID 4 68 42 6C 30(hBl0)Серийный номер тома 43 (0x2B) BS_VolLab 11 4E 4F 20 4E 41 4D 45 20 20 20 20(NO NAME ) Метка тома 54 (0x36) BS_FilSysSize 8 46 41 54 31 36 20 20 20(FAT16 ) Тип файловой системы (12- или 16-разрядная) В готовой флэши (смотрел несколько флэш Trancend) процесс чтения происходит так: сначала читается загрузочная область (винда почему-то это делает несколько раз), затем начинается чтение fat по порядку, а затем читается root и т.д. и т.п, т.е все достаточно логично. У меня происходит все довольно странно после чтения boot сектора винда читает сектор со смещением 0x40h(64) и переодисечки повторяет чтение то boot сектора, то этого сектора При попытке зайти на диск проводник виснет при это не выводится ни каких сообщений. Пробовал отфармотировать флэшку при помощи HP USB Disk Storage Format Tool, но она пишет, что диск защищен от записи. Очень хотелось бы узнать как те кто этим занимался решили проблему файловой системы диска, либо как я писали ее сами, либо брали уже готовую, скажем с носителя такой же емкости? Возможно проблема в блоке параметров биос (параметры брал согласно мануалам)? Ни где не встретил описание параметров BPB_SecPerTrk (Количество секторов на дорожку) и BPB_NumHeads (Число головок) из каких соображений они выбираются? Не мог бы кто-нибуть выложить свой бут сектор с комментариями, буду очень признателен?
×
×
  • Создать...