Так я уже спрашивал: почему решили что не так? В приведенном Вами сообщении кроме первого нулевых значений нет. А по приведённой мной цитате это нормально и грешить на библиотеку пока смысла нет.
Только там именно такого контроллера нет:
Причем не все контроллеры полноценно поддерживаются: собрал что мог без TI-шной железки (только mfm_util и софт линк ext2emu) и наверняка делаю что-то не так, но вот получаю такое сообщение:Код:mfm_emu_powerfail_v1.34/mfm/inc/mfm_decoder.h
...
// Track format
// Update mfm_controller_info list below if enum changed.
// ORDER IN THE TWO LISTS MUST MATCH
// TODO, replace this with pointer to CONTROLLER entry
enum {CONTROLLER_NONE,
CONTROLLER_NEWBURYDATA,
CONTROLLER_ALTOS,
CONTROLLER_WD_1006,.
CONTROLLER_TANDY_8MEG,.
CONTROLLER_WD_3B1,
CONTROLLER_MOTOROLA_VME10,.
CONTROLLER_DTC,.
CONTROLLER_DTC_256B,.
CONTROLLER_DTC_520_256B,.
CONTROLLER_DTC_520_512B,.
CONTROLLER_MACBOTTOM,.
CONTROLLER_ELEKTRONIKA_85,
CONTROLLER_ALTOS_586,
CONTROLLER_ATT_3B2,
CONTROLLER_CONVERGENT_AWS,
CONTROLLER_CONVERGENT_AWS_SA1000,
CONTROLLER_WANG_2275,
CONTROLLER_WANG_2275_B,
CONTROLLER_IBM_5288,
CONTROLLER_EDAX_PV9900,
CONTROLLER_OMTI_5510,.
CONTROLLER_XEROX_6085,.
CONTROLLER_TELENEX_AUTOSCOPE,.
CONTROLLER_MORROW_MD11,
CONTROLLER_UNKNOWN1,
CONTROLLER_DEC_RQDX3,.
CONTROLLER_IBM_3174,
CONTROLLER_SEAGATE_ST11M,
CONTROLLER_ISBC_215,
CONTROLLER_XEROX_8010,
CONTROLLER_ROHM_PBX,
CONTROLLER_ADAPTEC,.
CONTROLLER_MVME320,
CONTROLLER_SYMBOLICS_3620, CONTROLLER_SYMBOLICS_3640,.
CONTROLLER_MIGHTYFRAME,.
CONTROLLER_DG_MV2000,.
CONTROLLER_SOLOSYSTEMS,.
CONTROLLER_DILOG_DQ614,
CONTROLLER_DILOG_DQ604,
CONTROLLER_XEBEC_104786,.
CONTROLLER_XEBEC_S1420,.
CONTROLLER_EC1841,.
CONTROLLER_CORVUS_H, CONTROLLER_NORTHSTAR_ADVANTAGE,
CONTROLLER_CROMEMCO,
CONTROLLER_VECTOR4,
CONTROLLER_VECTOR4_ST506
} controller;
Там так:Код:./ext2emu --heads 4 --cylinders 615 --extracted_data_file st225ext --format WD_1006 --emulation_file st225.emulation
Not yet able to process format WD_1006
А не нулевой указатель там у "WD_3B1" "DTC" "DTC_256B" "DTC_520_256B" "DTC_520_512B" "OMTI_5510" "Seagate_ST11M" "MVME320" "Symbolics_3640" "NorthStar_Advantage" "Cromemco"... Ну указываем другой формат:Код:if (mfm_controller_info[drive_params.controller].track_layout == NULL) {
msg(MSG_FATAL, "Not yet able to process format %s\n",
mfm_controller_info[drive_params.controller].name);
exit(1);
}
На выходе получился практически такого же размера файл st225.emulation как и st225 (51286301 против 51286213)Код:./ext2emu --heads 4 --cylinders 615 --extracted_data_file st225ext --format WD_3B1 --emulation_file st225.emulation
At cyl 0
At cyl 1
...
At cyl 610
В общем нужно или искать подходящий из имеющихся контроллеров, либо дописывать описание неоновского контроллера.
Что касается предоставленного образа st225, то там чаще всего выбирался контроллер Elektronika_85 (но это не помогает - bad crc сплошные):
Код:grep "Trying controller " read_log.txt | cut -c-35 | sort | uniq -c | sort -n
2 Trying controller NorthStar_Advanta
4 Trying controller WANG_2275 Polynom
105 Trying controller Adaptec Polynomia
105 Trying controller Cromemco Polynomi
105 Trying controller DEC_RQDX3 Polynom
105 Trying controller DILOG_DQ614 Polyn
105 Trying controller EC1841 Polynomial
105 Trying controller Intel_iSBC_215 Po
105 Trying controller Morrow_MD11 Polyn
105 Trying controller MVME320 Polynomia
105 Trying controller OMTI_5510 Polynom
105 Trying controller Seagate_ST11M Pol
105 Trying controller SOLOsystems Polyn
105 Trying controller Symbolics_3620 Po
105 Trying controller Telenex_Autoscope
105 Trying controller Unknown1 Polynomi
105 Trying controller Xebec_104786 Poly
105 Trying controller Xebec_S1420 Polyn
105 Trying controller Xerox_6085 Polyno
188 Trying controller Altos_586 Polynom
188 Trying controller ATT_3B2 Polynomia
188 Trying controller CONVERGENT_AWS Po
188 Trying controller Corvus_H Polynomi
188 Trying controller EDAX_PV9900 Polyn
188 Trying controller Elektronika_85 Po
188 Trying controller MacBottom Polynom
188 Trying controller Motorola_VME10 Po
188 Trying controller NewburyData Polyn
188 Trying controller Vector4 Polynomia
188 Trying controller Vector4_ST506 Pol
188 Trying controller WD_1006 Polynomia
474 Trying controller data WD_1006 len
1034 Trying controller data Elektronika_
Smartом такую бумажку назвать сложно. Ведь smart обновляет информацию по мере износа винта. А бумажка это выходной контроль с завода. В случае появления нового дефекта, бумажку никто не дополнит.
Тем не менее нормальной работы эмулятора нет.
Смотрите здесь - http://www.pdp8online.com/mfm/status.shtml
Разумеется.
Вы путаете Божий дар с яичницей: WD1006 - плата адаптера HDD производства WD, а WD1010 - микросхема HDC, которая использовалась в очень многих платах.
>там чаще всего выбирался контроллер Elektronika_85
Вообще-то контроллер Э85 собран на аналоге серии WD1100, которую WD потом "собрал" в одном чипе WD1010.
- - - Добавлено - - -
Так я и намекаю что причину отсутствия "нормальной работы" Вы ищете совсем не там.....
А можно попросить сделать обзорную фотку платки эмулятора с одним любым, подключенным в режиме сдампливания, винтом со шлейфами.
p.s. Кстати, у HDD-шек из комплекта Э-85 разъём питания преимущественно не molex, а синенький с очень невнятными ключами, особенно если они обломаны.
dk_spb, Вы если намекаете, то намекайте до конца...
...
В поиске результата обновил пакеты, работа эмулятора стала намного лучше. Пропали ошибки в программе TESTDW (не всё). Однако для полного функционала этого не достаточно.
Похоже что программа TESTDW не делает низкоуровнего форматирования.
При обновлении пакетов делал так:
Подключил инет к BBG через сетевой модуль. Далее дал команды:
apt-get update
apt-get upgrade
На вопрос установить пакеты, ответил -Y.
MiX, Я так и не понял чем Вас не устраивает сделанный автором бинарник.
Если у Вас какие-то проблемы даже с авторским бинарником - надо с ними разбираться, а не плодить дополнительные проблемы.
Но это я так, рассуждаю вслух. Как поступать - дело сугубо Ваше.
Так в образе разве не было уже скомпилированных файлов? Зачем заново компилировать да еще и с другими библиотеками.
Если автор устройства выложил образ именно с такими библиотеками - наверное он проверял их работоспособность?
Что касается mfm_emu_powerfail то там нужно компилировать судя по описанию.
Команды update/upgrade обновляют пакеты Debian не трогая авторские программы.
Работоспособность на чём? Есть две версии плат эмулятора (rev A , rev B) , и две версии плат BBG (BBG1 и BBG2).
MiX,
Автор пишет "The easiest way to get stuff setup is to copy This prebuilt image BBB-mfm-emu_v1.32.img.xz (last modified Monday, 01-Oct-2018 07:48:08 EDT ) "
Ключевое слово prebuilt.
На вопрос "Зачем заново компилировать да еще и с другими библиотеками" если у Вас с авторской версией не работает Вы упорно не отвечаете. Версия 2-х месячной давности для Вас слишком стара? Тогда ку, тут я ничего посоветовать не могу.
Меня всегда забавляло когда кто-то сначала спрашивает совет, а потом с завидным упорством либо совета в упор не слышит, либо в ответ на совет начинает пересказывать целый спект разнообразных прописных истин (чего стоит одна "Команды update/upgrade обновляют пакеты Debian не трогая авторские программы"). Вам не нужны мои советы? Ок, слова против не услышите. Мой вопрос "Зачем тогда было звонить и спрашивать?", я полагаю, в таком случае восхитительно неуместен.
- - - Добавлено - - -
Mix, я попробую объяснить еще раз.
У Вас есть пара слагаемых: soft и hard. В Вашем случае результат получается не такой как у автора, то есть что-то работает не так.
Изначально Вы взяли софт скомпилированный и проверенный автором. То есть первое слагаемое у Вас было гарантированно правильное. Логично что надо разбираться со вторым слагаемым, то есть с Вашим железом.
Вы же вместо логичного пути начинаете перекомпилировать софтовую часть, получая в результате софт неизвестной работоспособности. Теперь у Вас оба слагаемых требуют проверки.
При этом на наводящие вопросы "зачем Вы это делаете" Вы ответить не хотите или не можете.
Более того, изначально я Вас спросил "что именно у Вас не работает", то есть почему Вы решили что результат работы проверенного автором софта и Вашего железа неправилен. Вы тоже так и не ответили.
Как говорят знатоки, а теперь внимание вопрос: "Что мы с Вами уже не одну страницу обсуждаем"?
Можно так попробовать отсеять контроллеры явно неподходящие для дампа винта от НЕОНа:
1) Поток данных 10 Мбит/сек.
2) размер сектора 512 байт
Смотрим mfm_emu_powerfail_v1.34/mfm/inc/mfm_decoder.h - по этому критерию подходят:
- WD_3B1
- DTC_520_512B
3) Согласно описанию WD1010-5 там используется CRC16 с полиномом X16+X12+X5+1 (CRC-16-CCITT), который может быть представлен таким константами: 0x1021 / 0x8408 / 0x8810.
А значит контроллер DTC_520_512B вычеркиваем, по причине 24-х битного CRC24.
Какое там начальное значение CRC не понятно, может у нас ноль в отличие от WD_3B1?..
Ещё у WD_3B1 расписан формат дорожки - структура trk_3B1, можно сравнить с чипом W1010, там есть рисунок..
Очень похоже, но там 17 секторов на треке (в ПК11/16 - 18) и GAP3=38...
Хм, у того же DTC_520_512B такие 18 секторов на трек - его бы клонировать и взять CRC16 от WD_3B1...
Удачи!Код:// Format for AT&T 3B1 computer
DEF_EXTERN TRK_L trk_3B1[]
#ifdef DEF_DATA
=
{ { 45, TRK_FILL, 0x4e, NULL },
...
{512, FIELD_SECTOR_DATA, 0x00, OP_SET, 2, NULL},
...
typedef struct {
char *name;
// Sector size needs to be smallest value to prevent missing next header
// for most formats. Some controller formats need the correct value.
int analyze_sector_size;
// Rate of MFM clock & data bit cells
uint32_t clk_rate_hz;
...
} CONTROLLER;
DEF_EXTERN CONTROLLER mfm_controller_info[]
// Keep sorted by header length. MUST MATCH order of controller enum
#ifdef DEF_DATA
= {
...
{"WD_3B1", 512, 10000000, 0,
> int analyze_sector_size; // Rate of MFM clock & data bit cells
Rate != size То есть не размер сектора никак.
И в данном случае это не sector_size, а analyze_sector_size. в комментарии (который Вы, кстати, привели) написано чем они отличаются. и только для "Some controller" нужно указывать "the correct value"
Более того
> {"DEC_RQDX3", 256, 10000000, 0,
У этого контроллера размер сектора 512, как и у WD_1006
Про фантазию "Поток данных 10 Мбит/сек" Вы вообще скромно умолчали, потому как:
> uint32_t clk_rate_hz; // Delay from index pulse to we should start capturing data in
У MFMников не бывает 10 Мбит/сек, 7-10 Мбит/сек - это уже RLL, а это явно не случай Неона
>Удачи!
Спасибо!
Не буду мешать Вам блуждать в Ваших фантазиях. ;-)
>я вместо МГц написал Мбит/c и столько боли...
Это как это?!?! "Поток данных 10 Мгц" - такого там тоже нет.
Это у Вас не боль получается, а бред.
>Как-нибудь и без вас справимся
Вот-вот. И результат, как обычно у Вас, будет "как-нибудь"
То delay с rate перепутаете, то size не тот возьмёте....
Эх, вашу бы энергию, да в мирных целях :rolleyes:
Код:mfm_emu_powerfail_v1.34/mfm$ gdb mfm_util
...
(gdb) p mfm_controller_info
$1 = {{name = 0x574c0 "CONTROLLER_NONE", analyze_sector_size = 0, clk_rate_hz = 10000000, ...}, {
name = 0x57500 "WD_3B1", analyze_sector_size = 512, clk_rate_hz = 10000000, start_time_ns = 0, header_start_poly = 4, header_end_poly = 15,
data_start_poly = 4, data_end_poly = 15, start_init = 0, end_init = 19, analyze_type = CINFO_CHS, header_bytes = 5, data_header_bytes = 2,
header_crc_ignore = 0, data_crc_ignore = 0, header_check = CHECK_CRC, data_check = CHECK_CRC, data_trailer_bytes = 0, separate_data = 1,
track_layout = 0x5eb90 <trk_3B1>, write_sector_size = 512, write_num_sectors = 17, write_first_sector_number = 0, track_words = 5209,
metadata_bytes = 0, copy_extra = 0, write_header_crc = {init_value = 65535, poly = 4129, length = 16, ecc_max_span = 0}, write_data_crc = {
init_value = 65535, poly = 4129, length = 16, ecc_max_span = 0}, analyze_search = CONT_MODEL, header_min_delta_bits = 0, data_min_delta_bits = 0,
first_header_min_bits = 0}, ...
Вы, видимо, ни меня, ни сорцы, о которых говорите, не читаете.
Еще раз специально для Вас:
> uint32_t clk_rate_hz; // Delay from index pulse to we should start capturing data in
- - - Добавлено - - -
Просто не люблю когда кто-то свои фантазии выдает за истину, да еще и упирается.
И вот еще:
Описание 82062
На первой же странице, выделили жирным шрифтом, тоже специально для Вас: "5 Mbit/s "
- - - Добавлено - - -
>"WD_3B1", analyze_sector_size = 512
Вы написали что сектор 512 только у двух контроллеров, я Вам сообщил что Вы ошибаетесь, так как смотрите не те данные.
Что не так?
Ну зачем же натягивать комментарий от следующего поля струкутры к предыдущему?
Про опечатку Mbits/s -> MHz я уже писал, постите великодушно - лёг после 4-х утра.Код:char *name;
// Sector size needs to be smallest value to prevent missing next header
// for most formats. Some controller formats need the correct value.
int analyze_sector_size;
// Rate of MFM clock & data bit cells
uint32_t clk_rate_hz;
// Delay from index pulse to we should start capturing data in
// nanoseconds. Needed to ensure we start reading with the first
// physical sector
uint32_t start_time_ns;
Да, про комментации мог и ошибится. Был неправ. Тоже вечером было много дел.
Но по существу:
1) про опечатку про 10 Мгц - разобрались. Не уверен что всё-таки там 10 МГц, а не 5, но разбираться сейчас лень.
2) c секторами 512 байт там работают не два указанных Вами контроллера, а гораздо больше. analyze_sector_size - это некий минимум для анализа, чтобы не потерять следующий заголовок.
И значение "256" в этой структуре не означает что размер сектора на диске 256 байт.
Ну как Вы могли не заметить "{"Elektronika_85", 256" - у Э85 явно 512-ти байтный сектор. Как и у "{"EC1841", 256"
При этом, как написано в комментариях, с какой-то непонятной для автора надобности для некоторых контроллеров нужно указывать не минимум, а реальное значение, что и привело к появлению значения "512" для двух контроллеров.
То есть по существу Вы напутали в обоих пунктах: и с опечаткой МГц, и с выбором двух контроллеров, теоретически пригодных под Ваши задачи.
- - - Добавлено - - -
Да, и по поводу опечатки, сейчас посмотрел даташит от WD, там нет разницы Mbit/s и MHz, то есть одинаково употребляется как "5 Mbit/sec data rate" так и "Data rate 5 Mhz".
То есть Вы описались ни с Mbis/s-Mhz, а с 10-5.
Да, действительно, если поискать "512, FIELD_SECTOR_DATA", то можно найти ещё такие структуры: trk_omti_5510 (но там CRC32), trk_northstar (странная какая-то геометрия), trk_seagate_ST11M (CRC32), trk_dtc_pc_512b (CRC24)... Иначе говоря, это всё равно нас не приводит к решению "из коробки" для дампа дисков ПК11/16, - тут нужно делать доработки, раз данных софт не смог на освнове имеющейся БД сдампить диск.
У автора софта какое-то своё понимание частоты MFM, во всяком случае 5 МГц мне там не встретилось. Ему видимо виднее, я же с этим софтом от силы час повозился и нет у меня этого чудного дейвайса.
Насчет заметить/не заметить - у меня никогда небыло и сейчас ничего PDP11-го, только дурные мысли в голове (ну нет, 30 назад у нас в школе были БК0010 с мембранной клавиатурой, до сих пор с ужасом вспоминаю, хорошо хоть меня с этих уроков информатики выгоняли). Я смотрел, что подходит по шаблону поиску, а не пытался проверять насколько каждый контроллер корректно описан. Целей выглядить шибко умным среди незнакомых мне людей тоже нет.
Нет у меня никаких задач (видать зря сюда зашел), была идея - я ещё озвучил. Проехали. Баба с возу, голове легче.
>у меня никогда небыло и сейчас ничего PDP11-го
Ну ЕС1841 с MS-DOS. Досовское-то у Вас наверняка что-то было ;-)
512 байт на сектор.....
>к решению "из коробки" для дампа дисков ПК11/16
Очень малопригоден обсуждаемый девайс для "из коробки". Поэтому пришлось отложить его в сторону и клепать свой. Он похуже в плане теоретической широты возможностей, но пока все задачи перекрывает. Но у меня именно для дампа, не эмулятор. И точно не решение для раздачи/тиражирования, так как софт на ходу правлю.
вполне возможно что оцифровку нужно вести на частоте в 2 раза большей чем оригинальный поток...
да и на сайте у чувака написанно = Note 1: The DEC RQDX1-RQDX3 controller uses mixed format on the tracks. My software doesn't handle it well. When reading an existing disk it will report errors on the alternate format used for most of the disk. The data will be read and the emulation file will have the data though the alternate format not be checked for errors. When creating an extracted data file only the data for the format detected will be extracted. You can use the analyze on a track with the alternate format to extract those areas. You will manually need to put the extracted data files into one good file.
так что сдампить можно якобы даже совсем неизвестный формат (только структуру прийдется потом копать вручную от него) и потом нужно будет добавить этой проге конфиги для этой структуры, в принципе думаю автор вполне может и ответить на вопросы по email и помочь "раскодировать" формат дорожки из реального дампа или из документации на чип контроллера
пару встреченных нюансов по развёртыванию ПО на BeagleBone:
- В моей BBB rev C. в конфиге были вот такие строки, cmdline которого я раскомментировал:
##enable Generic eMMC Flasher:
##make sure, these tools are installed: dosfstools rsync
#cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh
> - Пришло время найти чистую MicroSD карту. Нужна размером не менее 4 Gb и не более 32 Gb. ...
Я купил карточку MicroSDHC 32Gb SanDisk 10UAS класс и Etcher после заливки образа ругался, что верификация провалена, а сам BBG с такой карточкой просто часами бегал туда-сюда огоньками, что делал не знаю, но операцию копирования образа во флеш похоже провернуть не мог.
Тогда я нашел у себя MicroSD 2Gb Samsung, и ей и хватило места для образа (раздел занимает ~ 1.7Gb), и я смог уже пойти дальше штатно по инструкции.
На 03.11.2018 на сайте последняя версия 1.34 (mfm_emu_powerfail_v1.34.tgz, релиз от 03-Nov-2018).
Спасибо, сам разобрался.
- - - Добавлено - - -
Перед подключением питания эмулятора можно вытащить перемычку Р9 чтобы не подавать питание на конденсаторы и не ждать ~5 часов. После отладки платы BBG/BBB перемычку вернуть обратно.
Можно использовать программу Win32DiskImager
Есть. Но надо искать.
Да не к спеху.
- - - Добавлено - - -
...
По светодиоду MFM винчестера.
Известно что светодиод горит при работе MFM винта независимо от того есть к нему обращение чтения/записи или нет. Но горит он не просто по наличию питания а от совокупности нескольких факторов.
Кто знает какие?
На винте МС5405 при отключении выбора диска (движковыми переключателями), при включении загорается светодиод после раскручивания дисков и позиционировании светодиод гаснет. Есть ещё коды ошибок когда на МС5405 светодиод начинает мигать (какие не в курсе).
Ещё замечено на МС5401 при отклонении скорости от положенных 3600 об/мин. светодиод гаснет.
При каких ещё обстоятельствах светодиод гаснет?
Если устроит альтернативный вариант то - вот.
Они не только на Э-85, а на всех МС540Х кроме МС5410.
На такой случай я сделал переходник Molex(мама) - Cиненький разъём (папа). :)
В случае 40 пинового краевого разъёма, просто откусываю часть платы под 34 пиновый разъём.
- - - Добавлено - - -
Немного не в тему.
Тестер АСЕ РС-2000
О создании тестера - здесь и здесь.
Более крупное фото (с другого источника)
Скрытый текст
Долго же мне мозг выносила плата эмулятора. Наконец нашёл в чём была причина ошибок форматирования.
Не знаю у кого как, а мне плату эмулятора надо перезагружать в обязательном порядке перед низкоуровневом форматированием!
Иначе будут ошибки!
Для того чтобы плата загрузилась надо заранее сконфигурировать автозагрузку.
Так-же для успешного форматирования нужно в настройках MFM эмулятора превысить число цилиндров на 2.
Пример для HDD 5Мб КЖД ДВК:
./mfm_emu --cylinders 154 ...
При форматировании на компьютере количество цилиндров выставлять 152.
Запись образа на SD карту.
Для записи на SD карту надо сделать автомонтирование и прописать пути.
Открываем редактор.
И с новой строки пишемКод:sudo nano/etc/fstab
Где вместо звёздочки пишем идентификационный номер вашей SD карточки. Для того чтобы узнать номер можно воспользоваться командой blkid.Код:UUID=************ /media/sdcard auto defaults 0 0
Путь для SD карты я сделал такой - /media/sdcard Но можете сами выбрать куда будет монтироваться ваша карта.
В конфигурациях эмулятора соответственно нужно прописать именно этот путь (т.е какой вы выбрали для SD карты).
./mfm_emu --file /media/sdcard/***
и
EmuFN1= /media/sdcard/***
Где под звёздочкой- имя файла.
Может быть есть и более удобный способ создания автомонтирования, но мне не известно.
Использовал карту SD 4GB class10 отформатированною в FAT32.
Заказал вот такую дешёвую *****платку с али: https://ru.aliexpress.com/item/32600217090.html
Из явных вещей: не распаян USB (это не должно быть проблемой), нет кварца на RTC (тоже по идее должно быть норм, в случае чего припаять не проблема), также распаян камень AM3352, но по идее это тоже не препятствие.
Китайцы платку так и не отправили, пришлось заказать обычный BBB.
Пора бы обновить, а то показывает 404. Новая версия - BBB-mfm-emu_v2.09.img.xz
Заодно и powerfail - mfm_emu_powerfail_v2.11.tgz
Вот ещё клон - http://www.mentorel.ru/product/usomiq-bonecape/
Правда там двух платное решение, и нет HDMI, как и в BBG.
Платку собрал, успешно прочитал диск от ДВК. Попробовал прочитать диск от ЕС-1851, определило формат как ЕС-1841, при чтении постоянно сыпало различными ошибками, но кое-как прочитало.
Выяснилось, что нельзя из образа диска для ЕС-1841 сделать эмулируемый файл... Буду разбираться...