Не все CompactFlash одинаковы полезны
Apr. 23rd, 2024 12:11 pmОткрытий чудных нам таит попытка заменит жёсткий диск на CF.
Имею в хозяйстве жменю таких вот карточек, от фотоаппарата и различных проектов. Уже ни фотика, ни проектов, а карточки кочуют вместе со мной.

Основной действующей флешкой для моих опытов была и есть 16 метровая тестовая карточка от фотика. Она прекрасно определяется в BIOS, с ней легко работать. Но вот с остальными какие-то приколы.

Надёжная, как часы, карточка
Прекрасно определяется в BIOS (для меня стало открытием, что не каждый BIOS может определить...):

Есть у меня другая волшебная промышленная карточка, на которую возлагал кучу надежд. Снята с промпк, и работала точно во встраиваемых системах. Но, увы, отказалась определяться BIOS... Как её прописать вручную я не представляю. При этом в ридере работает корректно.

Карточка 2ГБ

Видит как 30 метров...
Я так и не понял в чём прикол и почему так происходит...
Следующая карточка, которая корректно определилась - это на 4 ГБ. В БИОС и т.п., но с ней возникли другие приколюхи.


Решил я значит сделать образ системы, чтобы накатить на карточку. Использовал qemu или virtualbox. Монтировал пустой образ карточки, и грузился с образа флоппидиска. ДОС отказывается видеть пустую карту! Даже если взять и сделать mkfs.fat на этой карте, всё равно не видит. Я что-то упускаю по работе с большими жёсткими дисками в ДОС?
Имею в хозяйстве жменю таких вот карточек, от фотоаппарата и различных проектов. Уже ни фотика, ни проектов, а карточки кочуют вместе со мной.

Основной действующей флешкой для моих опытов была и есть 16 метровая тестовая карточка от фотика. Она прекрасно определяется в BIOS, с ней легко работать. Но вот с остальными какие-то приколы.

Надёжная, как часы, карточка
Прекрасно определяется в BIOS (для меня стало открытием, что не каждый BIOS может определить...):

Есть у меня другая волшебная промышленная карточка, на которую возлагал кучу надежд. Снята с промпк, и работала точно во встраиваемых системах. Но, увы, отказалась определяться BIOS... Как её прописать вручную я не представляю. При этом в ридере работает корректно.

Карточка 2ГБ

Видит как 30 метров...
Я так и не понял в чём прикол и почему так происходит...
Следующая карточка, которая корректно определилась - это на 4 ГБ. В БИОС и т.п., но с ней возникли другие приколюхи.


Решил я значит сделать образ системы, чтобы накатить на карточку. Использовал qemu или virtualbox. Монтировал пустой образ карточки, и грузился с образа флоппидиска. ДОС отказывается видеть пустую карту! Даже если взять и сделать mkfs.fat на этой карте, всё равно не видит. Я что-то упускаю по работе с большими жёсткими дисками в ДОС?
no subject
Date: 2024-04-23 09:55 am (UTC)Да, не все... Причина банальна — часть карточек имеет IDE интерфейс, часть CompactFlash, а попадаются отдельные экземпляры вообще с SATA. И единственное, что гарантировано — это то что они не сгорят будучи воткнутыми.
В свое время наелся — моя система могла жить только с CF'ками, а на рынке уже поголовно были IDE'шки и встречались SATA'шки.
В целом, чем больше размер, тем больше шансов на то, что карта окажется SATA'шной. Максимальная CF'ка которую я видел была 8Гб. Все что выше, как правило, были уже чистые IDE'шки. Так что вопросы есть и к адаптеру. Для CF'ок он должен быть умным, для IDE'шек просто буфером.
По DOS и большим дискам... Там, как мне помнится, была проблема с LBA. Не все старое железо в принципе могло поддерживать большие диски. Но вроде был обходной путь — разметить CHS так, чтоб за заданные области не вылезать. Но в подробностях уже не скажу — самому гуглить надо ;-)
no subject
Date: 2024-04-25 04:00 pm (UTC)стоп. нет sata в стандартных CF формфакторе.
а вот фокусы LBA vs CHS вполне могут быть, особенно на старых биосах.
no subject
Date: 2024-04-26 03:56 am (UTC)(https://www.transcend-info.com/products/images/modelpic/523/TSxGCFX520_datasheet_V10_20140910.pdf)Ну, например, вот...
https://www.transcend-info.com/products/images/modelpic/523/TSxGCFX520_datasheet_V10_20140910.pdf (https://www.transcend-info.com/products/images/modelpic/523/TSxGCFX520_datasheet_V10_20140910.pdf)
https://maxmemory.ru/images/companies/1/maxmemory/SM230-CFast_new.pdf (https://maxmemory.ru/images/companies/1/maxmemory/SM230-CFast_new.pdf)
Очень хочется найти ссылку на SATAшки с обычными гнездами, но... Навскидку не находится, но они точно были....
no subject
Date: 2024-04-26 07:24 pm (UTC)в теории — да, может быть (cf бывает двух режимов — "типа как pcmcia" и "ide" — но на практике — я ещё ни разу не видел чтоб в cf-форм-факторе был sata, кроме cfast
no subject
Date: 2024-04-27 03:54 am (UTC)Ну ХЗ. Может мне в свое время экзотика какая попалась. Может маразм старческий приближается. Может еще какие причины... Короче говоря если вдруг найдется пруф — я его выставлю здесь. Если не найдется... Ну и ладно.
Мне в свое время были нужны строго "типа как pcimci" — Intel (он же Marvell) PXA270 другие не брал. Как и его 320 собрат. А еще любимые всеми -40...+85C... Могла и откровенная экзотика попасться...
no subject
Date: 2024-04-23 04:59 pm (UTC)no subject
Date: 2024-04-23 09:04 pm (UTC)Есть нестыковка в ваших словах и с тем что я наблюдаю. Год BIOS и размер диска на фото ниже.
no subject
Date: 2024-04-23 09:30 pm (UTC)4. History of BIOS and IDE limits
ATA Specification (for IDE disks) - the 137 GB limit
At most 65536 cylinders (numbered 0-65535), 16 heads (numbered 0-15), 255 sectors/track (numbered 1-255), for a maximum total capacity of 267386880 sectors (of 512 bytes each), that is, 136902082560 bytes (137 GB).
In Sept 2001, the first drives larger than this (160 GB Maxtor Diamondmax) appeared.
BIOS Int 13 - the 8.5 GB limit
At most 1024 cylinders (numbered 0-1023), 256 heads (numbered 0-255), 63 sectors/track (numbered 1-63) for a maximum total capacity of 8455716864 bytes (8.5 GB). This is a serious limitation today.
It means that DOS cannot use present day large disks.
The 528 MB limit
If the same values for c,h,s are used for the BIOS Int 13 call and for the IDE disk I/O, then both limitations combine, and one can use at most 1024 cylinders, 16 heads, 63 sectors/track, for a maximum total capacity of 528482304 bytes (528MB), the infamous 504 MiB limit for DOS with an old BIOS. This started being a problem around 1993, and people resorted to all kinds of trickery, both in hardware (LBA), in firmware (translating BIOS), and in software (disk managers).
The concept of `translation' was invented (1994): a BIOS could use one geometry while talking to the drive, and another, fake, geometry while talking to DOS, and translate between the two.
Отсюда: https://tldp.org/HOWTO/Large-Disk-HOWTO-4.html (https://tldp.org/HOWTO/Large-Disk-HOWTO-4.html)
Очевидно ты работаешь с диском из биос — и ограничения инт13 ему по барабану.
no subject
Date: 2024-04-23 09:37 pm (UTC)ЕМНИП дос через инт13 с диском общается, и там есть приколы, подробней в другом коментарии или вот тут смотри:
https://tldp.org/HOWTO/Large-Disk-HOWTO-4.html (https://tldp.org/HOWTO/Large-Disk-HOWTO-4.html)
Оттуда же кстати: This in effect means that the `geometry' is obsolete, and the total disk size can no longer be computed from the geometry, but is found in the LBA capacity field returned by the IDENTIFY command (https://tldp.org/HOWTO/Large-Disk-HOWTO-10.html#identify).
Биос судя по всему об ЛБА не в курсе — потому и геометрия с размерами такие странные.
no subject
Date: 2024-04-23 09:44 pm (UTC)Спасибо за инфу, но вот смотри, ведь CF корректно определяется.
Отсюда.
У меня сейчас вопрос вообще совсем другой. Я пытался сделать локальный образ на 4 гига и скопировать на него файлики. Два образа флешек: 16 мегабайтовой, на которой MS-DOS 6.22, и просто пустой образ созданный командой dd (fat, любыми форматированиями, не важно). Стартую их в qemu:
qemu-system-i386 -hda mydos.img -hdb 4gb.img
И как ни крути, в ДОС 6.22 диск не виден (что там не делай). Но, если загрузится во фридос, то виден. Что за херня, не могу понять. Во фридосе удалось всё разметить и сделать по красоте, но фридос это уже какая-то хипстерская попсня.
no subject
Date: 2024-04-25 07:23 pm (UTC)А теперь смотри: ДОС использует для доступа к диску INT13.
А именно инт13 следующую функцию:
02H читать секторы
вход: DL = номер диска (0=диск A...; 80H=тв.диск 0; 81H=тв.диск 1)
DH = номер головки чтения/записи
CH = номер дорожки (цилиндра)(0-n) =¬
CL = номер сектора (1-n) ===========¦== См. замечание ниже.
AL = число секторов (в сумме не больше чем один цилиндр)
ES:BX => адрес буфера вызывающей программы
0:0078 => таблица параметров дискеты (для гибких дисков)
0:0104 => таблица параметров тв.диска (для твердых дисков)
выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.
ES:BX буфер содержит данные, прочитанные с диска
замечание: на сектор и цилиндр отводится соответственно 6 и 10 бит:
1 1 1 1 1 1
+5-4-3-2-1-0-9-8-7-6-5-4-3-2-1-0+
CX: ¦c c c c c c c c C c S s s s s s¦
+-+-+-+-+-+-+-+-¦-+-+-+-+-+-+-+-+
+======> исп. как старшие биты номера цилиндра
Т.е. в INT13 ты можешь использовать только 1024 цилиндра, а у тебя биос их определил почти 8000.
Т.е дос используя инт13 может адресовать только 1/8 от твоего диска — 500 Мб.
Но головок определилось только 16, а в инт13 можно использовать 256. Поэтому в более новых биосах для больших дисков сделали трансляцию реальной геометрии в такую в которой всегда 256 головок, и кратно меньше цилиндров.
Вроде как дефолтовый для qemu SeaBios должен уметь, возможно надо зайти в биос виртуалки и включить ЛБА.
ЗЫ Ну или поставить тулзу которая подменит инт13 своим кодом который умеет транслировать. Опять же из того-же howto:
If a BIOS does not know about `Large' or `LBA', then there are software solutions around. Disk Managers like OnTrack or EZ-Drive replace the BIOS disk handling routines by their own.
Often this is accomplished by having the disk manager code live in the MBR and subsequent sectors (OnTrack calls this code DDO: Dynamic Drive Overlay), so that it is booted before any other operating system. That is why one may have problems when booting from a floppy when a Disk Manager has been installed.
no subject
Date: 2024-04-23 10:03 pm (UTC)На карточку 4 гига с фридосом грузится отказался...
no subject
Date: 2024-04-24 06:23 am (UTC)вроде, как в диски с файловой системой fat12 больше 2 Гиг нельзя из-за ограничения стандарта
поддержка LBA и fat32 появилась в MS-DOS 7.1 (Win95 OCR2) и PC DOS 7.1
Попробуйте советы отсюда http://poligon2.kp4.ru/topic/17352 (http://poligon2.kp4.ru/topic/17352)
CF-ки, видимо, отличаются наличием-отсутствием ПЗУ, в которое можно записать отдельный загрузчик, или туда уже записан проприетарный загрузчик.
В общем: OnTrack disk manager V > 5 в руки и пытаться записать на CF его загрузчик
https://www.betaarchive.com/wiki/index.php?title=Microsoft_KB_Archive/126855 (https://www.betaarchive.com/wiki/index.php?title=Microsoft_KB_Archive/126855)
no subject
Date: 2024-04-30 06:12 am (UTC)Я в таких случаях находил некую промежуточную материнку, и определял параметры диска на ней, потом прописывал вручную. Но опять же, не все карты потом стартуют....