PDA

Просмотр полной версии : Работа с SD контроллером на Специалисте_МХ2



fifan
05.01.2017, 20:49
Значит так, сообщая по пунктам.
1. поставил ВИ53 - бессовестно орёт всегда, невозможно работать, снял;
2. сделал все изменения по питанию, подключения выходов ВИ53, улучшения для подключения Z80 - его пока не подключал;
3. прошил плисину, но похоже адреса управления контроллером в лоадере не те - завтра проверю на исправленном лоадере. Кто в курсе адреса поставлю #f000/#f001. Хотя нет исправлю на #f004/#f005 исходя из этого обсуждения (http://www.nedopc.org/forum/viewtopic.php?f=90&t=11446&start=15).

А это очередное видео. Тесты прогнал все. Как говорил, тест Рюмика зависает на клавиатуре.

https://youtu.be/uZ20Ze4NVvg

fifan
06.01.2017, 14:13
Результат последнего экперимента. По директиве U (запуск лоадера) загораются оба светодиода, на экране надпись инициализация. И всё. Вытаскиваешь карту, он просит её вставить. Сейчас буду запаивать внешний SD холдер. При штатном на плате идёт нагрев стабилизатора 3,3 вольта - где-то через холдер замыкание на землю., напряжение 3,3 вольта пропадает.
Одновременно ещё одна странность. По директиве X происходит зависание компа, в RAMFOS перехода нет. Экран синий, надпись Монитор? Извлекаю плисину, всё нормально, почему-то она не даёт переходить в режим МХ.

fifan
29.01.2017, 19:01
Результат последнего экперимента. По директиве U (запуск лоадера) загораются оба светодиода, на экране надпись инициализация. И всё. Вытаскиваешь карту, он просит её вставить. Сейчас буду запаивать внешний SD холдер. При штатном на плате идёт нагрев стабилизатора 3,3 вольта - где-то через холдер замыкание на землю., напряжение 3,3 вольта пропадает.
Одновременно ещё одна странность. По директиве X происходит зависание компа, в RAMFOS перехода нет. Экран синий, надпись Монитор? Извлекаю плисину, всё нормально, почему-то она не даёт переходить в режим МХ.

Интерфейс от PVV не заработал. Перешёл на схему SPI интерфейса от HardWareMan'а (http://www.spetsialist-mx.ru/index32.html). Тут немного продвижение пошло. По крайней мере теперь на экран выводится:

59575

Посмотрел спецификацию на SD интерфейс "SanDisk Secure Digital Card". Там частота инициализации и обычной работы с SD картой должны быть соответственно: 0,1...0,4 и до 25 МГц. У меня эти цифры соответственно: 0,625 и 5 МГц. Завтра первую цифру, а именно нижнюю частоту уменьшу до 0,3125 МГц (10 МГц/32). Может поможет. Хотя в Специалисте на ПЛИС (http://www.spetsialist-mx.ru/index34.html) данные частоты были: 1 и 8 МГц и там всё работало.

fifan
02.02.2017, 20:21
Поменял частоту работы - то же самое. Раньше не обращал внимание, но с появлением последней надписи справа появляется столбец процесса загрузки файла bios.bin. Почему прерывается работа не понятно.

Процесс прерывается на проверке MBR, а именно при проверки различных байтов в MBR. При детальном просмотре MBR "идеального" образа SD карты (SD.IMG) в эмуляторе b2m и реальной SD карте, отформатированной как FAT под виндой. Первая будет всегда правильной, а вот реальная не верная. И что делать?

fifan
05.02.2017, 15:31
Мучения по запуску SD интерфейса завершились - всё заработало. Сначала мне пришлось переписать прошивку, а именно лоадер, чтобы он сохранял считанный сектор. Его дамп не совпадал с реальным снятым с самой SD карты. Пробовал входной MISO инвертировать, задерживать - непомагало. Установил в делителе частоты высокую в 2,5 МГц, низкую - 312,5 кГц. Заработало - сектор считался без ошибок. Использовал данные карты для эксперимента:
1. SD Kingston 256 МБайт - сектора считаются верно, но в целом не пошла;
2. SD Transcend 2 ГБайта - работает всё;
3. MMC Mobile 512 МБайт - работает всё.
Все карты форматировал в FAT16, записывал на карты BIOS.BIN с Монитором 2. Вот ниже записанное видео работы. В конце фрагмента видно что по директиве X не происходит перехода в МХ режим, а высвечиваются большие буквы "Специалист МХ 2", которые должны кстати выводится при сбросе - нет этого. В атаче представлены: прошивка Специалиста МХ2, исходники этой прошивки, исходники проекта SD контроллера.

Страничка про контроллер на сайте - ссылка (http://www.spetsialist-mx.ru/index32.html).

http://www.spetsialist-mx.ru/schemes/Spetsialist_MX2_SD.png
https://youtu.be/d0D1faBTXWQ

HardWareMan
05.02.2017, 16:22
Четко же сказано, что частота инициализации должна быть менее 400кГц. Я тоже в своем сером использовал 312 (или около того, что там было на счетчиках). И именно для медленной скорости мы имеем сигнал BUSY, чтобы дождаться транзакции на шине. Дальше, высокая частота не обязана быть 8МГц, например. Можно даже оставаться на 315, но это будет медленно (хотя в масштабах Специалиста это будет все равно соизмеримо дисководу). А вот если подать на нее хотя-бы удвоенную частоту F2, то можно в режиме высокой скорости обращаться командами MOV A,M без задержек, т.к. команда требует 7 тактов, а на удвоенной частоте это будет 14 тактов SPI, что более чем достаточно, чтобы завершить транзакцию к следующей команды. Но это и не нужно, т.к. адрес порта статичен и можно использовать IN/OUT, а это уже 10 тактов (+3 на чтение адреса порта) или вообще LDA/STA, что 13. Т.е. можно не парясь подать F2 и работать без задержек и оглядки на сигнал BUSY, все равно данный комп быстрее не сможет.

Что касается SPI, то не правильно подключать MOSI ко входу регистра сдвига напрямую. Т.е., на задержках шины оно работать будет, но лучше сделать все верно. Если посмотреть на описание SPI, например, в датащите Атмеги, то видно, что там на одном перепаде такта идет сэмплирование, а на другом сдвиг. Для карт, это ИМНИП, фронт семплирование, спад - сдвиг. Поэтому, между MOSI и входом сдвигового регистра следует поставить 1 триггер, который по фронту будет всегда сэмплировать сигнал MOSI. MISO же можно выводить напрямую со сдвигового регистра (бит D7). Эта модель будет правильной, и, возможно, решит многие проблемы в будущем.
http://savepic.ru/12843869.png

fifan
05.02.2017, 16:50
между MOSI и входом сдвигового регистра следует поставить 1 триггер, который по фронту будет всегда сэмплировать сигнал MOSI.
Хорошо попробую. Хотя схема полностью твоя, не считая схему управления двухнаправленным буфером шины данных.

А вот что скажешь, HardWareMan, по поводу перехода в режим МХ по директиве X? Исходники прошивки я привёл выше. У меня наработки для SD контроллера в SpetsCommander'е, который запускается из-под МХ. Хотелось бы продвинутся в этом направлении.

HardWareMan
05.02.2017, 19:41
Я скоро предоставлю верилог модель контроллера. И, кстати, тут мне поможет твой код. Просто мне не удобно запускать большой МХ2, я стараюсь делать все на малом. Но конкретно контроллер отлажу именно на большом, чтобы у вас всех заработало как надо. Микры придут примерно через неделю-другую и я включусь.

Касаемо переходя я хз, не смотрел.

Error404
11.02.2017, 12:53
Еще тут спрошу.
Насколько необходим этап начальной инициализации (400кгц, растущие еще из ММС) с современными картами SD, тактирование которых в UHS режиме в "больших устройствах" уже идет на сотни мегагерц? Спрашиваю сугубо из соображений того, что схему можно было бы на треть уменьшить, будь это требование инициализации пережитком. В ПЛИС то понятно что пофиг, а вот кому на рассыпухе собирать (что я и планирую) - имеет смысл сократить кусок со вторым генератором. Может из опыта работы с разными картами кто-то знает?

fifan
11.02.2017, 14:08
тут мне поможет твой код
Какой код? Применяется полностью твой Loader v5. В нём в качестве фильтра поиска файл bios.bin, я ищу только rks и пока всё. Планирую выводить cpu/i80, а может и odi файлы - это для МХ.

кому на рассыпухе собирать (что я и планирую) - имеет смысл сократить кусок со вторым генератором
Нет второго генератора. Стоят делители на триггерах под разные частоты. Напомню в МХ2 применяется в качестве входной частота в 10 МГц. Кстати на рассыпухе собирал PPV (http://www.nedopc.org/forum/viewtopic.php?f=90&t=11446&start=60), но я воплотить в жизнь его схему в плисине мне не удалось - незаработала.

Error404
11.02.2017, 14:39
Делители это еще больше корпусов получится чем с доп. генератором (т.к. делить придется больше чем на 16, а экзотических счетчиков с коэф. > 16 в одном корпусе обыщещься), но не суть конечно. Схема PVV тоже сложная - десяток корпусов, хочется проще.

fifan
11.02.2017, 14:47
между MOSI и входом сдвигового регистра следует поставить 1 триггер, который по фронту будет всегда сэмплировать сигнал MOSI.
Поставил триггер. Изменений не в лучшую не в худшую сторону не видно. Так и оставлю.

На данный момент две неприятности:
1. По директиве Х нет перехода в МХ режим. Я думаю здесь ошибка инициализации RAMFOS, вернее её комп не находит.
2. Заметил что с внешним Flash-диском комп не запускается. Раньше я думал, что это связано с совместным использованием Flash-диска и SD контроллером одной выборки. Но сейчас последний я поставил на U3, т.е. вместо контроллера дисковода.

HardWareMan
11.02.2017, 17:51
Мои чипы уже трекаются в городе, но забрать их только на новой неделе смогу. Там и включусь в работу.

HardWareMan
18.02.2017, 12:07
Получил вчера чипсы. Дайте мне немного времени.

fifan
18.02.2017, 14:26
Если что проект для Квартуса с прошивкой находятся здесь (http://www.spetsialist-mx.ru/index32.html).

HardWareMan
20.02.2017, 08:08
Ошибки на сайте:

При чтении из регистра управления распределение битов таково:
D0 - признак работы карты ("0" - карта не активна и "1" - карта активна);
D1 - текущая скорость обращения с картой ("0" - 312,5 кГц и "1" - 2,5 МГц);
D6 - признак вставленной карты ("0" - вставлена и "1" - гнездо пусто);
D7 - бит равен "0" - происходит процесс сдвига.

При записи в регистр управления распределение битов таково:
D0 - это выбор карты ("0" - карта не выбрана и "1" - карта выбрана);
D1 - бит выбора скорости тактов SPI ("0" - 312,5 кГц и "1" - 2,5 МГц);
D2 - RED - сигнал обращения к карте ("0" - активация светодиода) - Operate;
D3 - GREEN - сигнал вставленной карты ("0" - активация светодиода) - Insert.
Активация LED = 1, для этого специально на выходах стоит инвертор. Биты статуса INSERT и BUSY поменять местами, т.к. INSERT это D7, а BUSY это D6. Так же, предлагаю INSERT привести, пока не поздно, в положительную логику (1 - вставлена, 0 - отсутствует), т.к. MCS, оба светодиода и BUSY уже в положительной логике. Статус считывается так же, как и записывается, все корректирующие инверторы находятся непосредственно на выходах.

fifan
20.02.2017, 09:32
На сайте поменяю, мне об этих опечатках уже PVV сообщил. Корректировки в схеме тоже приветствую, тогда нужно лоадер переписать. Кстати пока не работает по X переход в МХ режим я занимаюсь написание программы для вывода каталога SD карты и запуска с карты в Стандартном режиме. Вывод работает, запуск нет. Пишется на карту в виде Монитор2 + SpetsBrowser = bios.bin. Bios.bin пишется на карту и загружается лоадером по директиве U. В ближайшие дни выложу сюда, в эмуляторе работает. Вот скриншот.

HardWareMan
20.02.2017, 16:13
fifan, у тебя на схеме на EPM подается два сигнала выборки: U6 и U3. U3 вроде как (судя по твоему проекту) и есть CS, а зачем U6? И еще MX зачем-то подается. А еще, я не вижу сигнала RD, а направление шины задается относительно WR, что может вызывать конфликт шины, т.к. сигнал WR процессор выставляет задолго после выставления адреса (и срабатывания CS).

fifan
20.02.2017, 17:03
Сигнал U6 остался от первых заморочек: управлять контроллером при Std режиме, но потом я решил использовать U3. Соответственно различать режим я хотел по MX - тоже не пригодился. RD лучше применить? Т.е. управлять двухнаправленным входным/выходным буфером по сигналам WR, RD или по одному из них?

HardWareMan
20.02.2017, 17:12
Лучше раздельно, но платы то уже сделаны, верно? Попробуем обойтись одним.

fifan
20.02.2017, 17:34
Всё работает с лоадером. Но указанные тобой ошибки наводят на мысли:
1. U6 - при совместной работе SD контроллера с Flash-диском (на схеме - активация сигнала - XP11) просто тупо гасит комп, он весит ни на что не реагирует.
2. RD - нужно задействовать. Возможно по прчине не разграничения буферов и не происходит переход в МХ режим, белеберда на экран выходит. Ещё заставка (большая надпись "Специалист_МХ2") почему-то не выводится. Хотя это наверное прогаммный касяк.

HardWareMan
20.02.2017, 17:50
fifan, а ты это делал?
http://savepic.ru/12993946.png
Иначе по дефолту там "тянуть сильно на землю".

В общем, накидал я проектик:

// Контроллер SPI для Специалист-MX2 на EPM7032SLC44
module MX2_CPLD(
// Системные
input Clk, // Входная частота 10МГц
input nRes, // Входной сигнал сброса, активный уровень лог.0
input nWR, // Вход строба записи
input nCS, // Вход выбора контроллера
input Adr, // Вход адреса данные/управление
inout [7:0]Dat, // Шина данных
// SPI
output nSEL, // Выходной сигнал выбора карты
output reg SCK, // Выход тактовой частоты SPI
input MISO, // Вход данных SPI
output MOSI, // Выход данных SPI
output nRED, // Выход управления красным светодиодом
output nGREEN, // Выход управления зеленым светодиодом
input nINS, // Вход датчика вставления карты
// Резерв
input MX, // ?
input U6 // ?
);
// Внутренние регистры
reg [3:0]Pre; // Делитель частоты
reg [3:0]Ctrl; // Регистр управления
reg [7:0]Data; // Регистр данных
reg [2:0]Bits; // Счетчик сдвигаемых бит
reg RMISO; // Защелка сигнала MISO
reg BUSY; // SPI занят передачей
// Комбинаторика
assign nSEL = ~Ctrl[0]; // Выбор карты
assign nRED = ~Ctrl[2]; // Красная лампочка
assign nGREEN = ~Ctrl[3]; // Зеленая лампочка
assign MOSI = Data[7]; // Выход MOSI SPI
assign Dat[7:0] = (~nCS & nWR) ?
(Adr) ? {~nINS,BUSY,2'h0,Ctrl[3:0]} : Data[7:0]
: 8'hZZ;
// Синхронная логика
always @(posedge Clk) begin
// Делитель частоты
Pre[3:0] <= Pre[3:0] + 4'h1;
// Запись в управление может происходить ассинхронно
if (~nCS & ~nWR & Adr) Ctrl[3:0] <= Dat[3:0];
// Сигнал сброса имеет приоритет вне зависимости от выбранной скорости
if (~nRes)
begin
// Сброс действиет на эти регистры
Ctrl[3:0] <= 4'h0;
Bits[2:0] <= 3'h0;
BUSY <= 1'b0;
SCK <= 1'b0;
end else begin
// Состояние SPI
if (BUSY)
begin
// Делитель частоты
if (((Pre[3] & Pre[2] & Pre[1]) | Ctrl[1]) & Pre[0])
begin
// SPI работает
if (SCK)
begin
// Сбрасываем такт
SCK <= 1'b0;
// Спад, поэтому сдвигаем
Data[7:0] <= {Data[6:0],RMISO};
// Считаем биты
Bits[2:0] <= Bits[2:0] + 3'h1;
// Это был 7й бит?
if (Bits[2] & Bits[1] & Bits[0]) BUSY <= 1'b0;
end else begin
// Устанавливаем такт
SCK <= 1'b1;
// Это фронт, поэтому сэмплируем вход
RMISO <= MISO;
end
end
end else begin
// Обнуляем счетчик бит
Bits[2:0] <= 3'h0;
// Запись в регистр данных возможна только если SPI не занят
if (~nCS & ~nWR & ~Adr)
begin
Data[7:0] <= Dat[7:0];
BUSY <= 1'b1;
end
end
end
end
// Конец
endmodule
Кактус вроде все понял правильно, и оно даже впритык влезло в EPM7032:
http://savepic.ru/13004186.png
Симуляция показала, что схема вроде как жизнеспособна:
http://savepic.ru/13030810.png
Но тут есть некоторые допущения, которые невозможно обойти посредством EPM7032, тупо не хватает ячеек:
1. Входные сигналы управления не синхронизированы и потенциально могут вызывать глюк SPI машины
2. Допускается тот факт, что сигнал WR процессор ставит когда уже шина данных содержит данные, однако мы не имеем запрещающий сигнал #RD, поэтому EPMка может передавливать шину и не сработает.
Второй пункт меня парит очень сильно. Если добавить всего один сигнал, то можно обойтись и EPM3032, а так придется ставить EPM3064 и делать синхронизацию сигналов.

fifan
20.02.2017, 18:42
Да! Нужно поставить входные как трехстабильные! Вот и глюки плиска вводит!

Кстати Standard Spetsialist Browser на железке заработал. Блин опять запуск файлов на Std глючит. Мы же подгружаем Монитор2 вместе с программой. Что опять нужно инициализировать монитор для запуска файла... Опять всё заново делать.

- - - Добавлено - - -

Ну что, господа. МХ режим заработал - поставил соответствующий крыжик, указанный HardWareMan'ом выше при компилировании проекта. Из RAMFOSа запустил свой тест памяти, всё проверил. Буду дальше писать программы - охота в RKS файлы поиграться, а то всё эмулятор, эмулятор...

fifan
21.02.2017, 09:59
Подсмотрю процесс запуска файлов в Std режиме у HardWareMan'а в программе работы с внешним Flash-диском, исходники от автора есть.

HardWareMan
21.02.2017, 15:17
Так что, вводим #RD? Если да то куда и как?

fifan
21.02.2017, 17:42
Так что, вводим #RD? Если да то куда и как?
Наверное вводим. Вот незанят 14 вывод плисины. Предлагаю кинуть провод к 1 выводу АП6 (DD40).

RD активирует буфер который выводит данные из плисины? Знать чтобы проект изменить.

HardWareMan
21.02.2017, 18:24
Да, я же объяснял. Его отсутствие может быть причиной твоих глюков.

http://savepic.ru/12982617.png
#RD у нас процессорный же? Активный лог.0?

- - - Добавлено - - -

Вот! Все четко по букварю!

http://jpegshare.net/images/05/f6/05f66ba0c7307e7984b54b5838426a22.png


- - - Добавлено - - -

Если больше не требуется функций от контроллера, то он четко влазит в EPM7032SLC, который совместим по ногам с EPM7064SLC в этом же корпусе.


// Контроллер SPI для Специалист-MX2 на EPM7032SLC44
module MX2_CPLD(
// Системные
input Clk, // Входная частота 10МГц
input nRes, // Входной сигнал сброса, активный уровень лог.0
input nRD, // Вход строба чтения
input nWR, // Вход строба записи
input nCS, // Вход выбора контроллера
input Adr, // Вход адреса данные/управление
inout [7:0]Dat, // Шина данных
// SPI
output nSEL, // Выходной сигнал выбора карты
output reg SCK, // Выход тактовой частоты SPI
input MISO, // Вход данных SPI
output MOSI, // Выход данных SPI
output nRED, // Выход управления красным светодиодом
output nGREEN, // Выход управления зеленым светодиодом
input nINS, // Вход датчика вставления карты
// Резерв
input MX, // ?
input U6 // ?
);
// Внутренние регистры
reg [3:0]Pre; // Делитель частоты
reg [3:0]Ctrl; // Регистр управления
reg [7:0]Data; // Регистр данных
reg [2:0]Bits; // Счетчик сдвигаемых бит
reg RMISO; // Защелка сигнала MISO
reg BUSY; // SPI занят передачей
// Комбинаторика
assign nSEL = ~Ctrl[0]; // Выбор карты
assign nRED = ~Ctrl[2]; // Красная лампочка
assign nGREEN = ~Ctrl[3]; // Зеленая лампочка
assign MOSI = Data[7]; // Выход MOSI SPI
assign Dat[7:0] = (~nCS & ~nRD) ?
(Adr) ? {~nINS,BUSY,2'h0,Ctrl[3:0]} : Data[7:0]
: 8'hZZ;
// Синхронная логика
always @(posedge Clk) begin
// Делитель частоты
Pre[3:0] <= Pre[3:0] + 4'h1;
// Запись в управление может происходить асинхронно
if (~nCS & ~nWR & Adr) Ctrl[3:0] <= Dat[3:0];
// Сигнал сброса имеет приоритет вне зависимости от выбранной скорости
if (~nRes)
begin
// Сброс действует на эти регистры
Ctrl[3:0] <= 4'h0;
Bits[2:0] <= 3'h0;
BUSY <= 1'b0;
SCK <= 1'b0;
end else begin
// Состояние SPI
if (BUSY)
begin
// Делитель частоты
if (((Pre[3] & Pre[2] & Pre[1]) | Ctrl[1]) & Pre[0])
begin
// SPI работает
if (SCK)
begin
// Сбрасываем такт
SCK <= 1'b0;
// Спад, поэтому сдвигаем
Data[7:0] <= {Data[6:0],RMISO};
// Считаем биты
Bits[2:0] <= Bits[2:0] + 3'h1;
// Это был 7й бит?
if (Bits[2] & Bits[1] & Bits[0]) BUSY <= 1'b0;
end else begin
// Устанавливаем такт
SCK <= 1'b1;
// Это фронт, поэтому сэмплируем вход
RMISO <= MISO;
end
end
end else begin
// Обнуляем счетчик бит
Bits[2:0] <= 3'h0;
// Запись в регистр данных возможна только если SPI не занят
if (~nCS & ~nWR & ~Adr)
begin
Data[7:0] <= Dat[7:0];
BUSY <= 1'b1;
end
end
end
end
// Конец
endmodule

fifan
21.02.2017, 18:42
А ты уже прошивал плис?

HardWareMan
21.02.2017, 19:06
Нет, я пока только теоретизирую. Надо освободить место на столе и начать уже практиковать.

fifan
22.02.2017, 07:42
Я твой верилог файл тоже в новый проект воткнул. Он будет изменяться? Не факт что я его повторю - не уверен что у меня есть в наличии EPM7032SLC44, а компилировать под EPM7064SLC44 неохота.
А сегодня займусь доращиванием проводка /RD до плисины и соответственно изменённый проект буду прошивать. Но я как-то больше склоняюсь к проекту на верилоге - дешево и компактно.

HardWareMan
22.02.2017, 19:30
fifan, а ты какой корпус под гнездо SD карты выбрал? Чет ни один мой не подходит.

fifan
22.02.2017, 22:09
Да и у меня не подошёл ни один. Наверное когда проектировал плату был какой-то держатель карты, но потом я его потерял. Я запаял держатель на монтажном поле.

fifan
23.02.2017, 15:54
Подпаял сигнал /RD.
Всё ж нашёл я EPM7032SLC44 и прошил её. И ... ничего. Пишет нет карты. HardWareMan, а ты опрос карты в плисину воткнул?

Прошил изменённый проект (с управлением буферов шины данных сигналами и /WR и /RD) на EPM7032SLC44 - никаких изменений не нашёл. Даже Standard Spetsialist Browser, который я записал вместе с Монитором 2 в файл bios.bin работает нормально, как и прежде. Чуть погодя сниму процесс работы на видео.

HardWareMan
23.02.2017, 15:56
Там надо лоадырь менять. Я же поменял полярность датчика карты.

fifan
27.02.2017, 15:15
Там надо лоадырь менять. Я же поменял полярность датчика карты.

А не проще в проекте сменить или есть новый готовый лоадер?

fifan
30.11.2017, 06:39
Вот внутренности ПЛИС.

Tronix
30.11.2017, 14:55
Вот! Все четко по букварю!


Приветствую, а картинок на savepic не сохранилось, хочется посмотреть сим :(

fifan
30.11.2017, 15:19
Приветствую, а картинок на savepic не сохранилось, хочется посмотреть сим :(

А где это? Не нашёл топика.

Tronix
30.11.2017, 15:22
А где это? Не нашёл топика.

Вот из этого сообщения: http://zx-pk.ru/threads/27418-rabota-s-sd-kontrollerom-na-spetsialiste_mkh2.html?p=901946&viewfull=1#post901946

fifan
30.11.2017, 15:28
Да, точно нет вложения. HardWareMan, что там было?

Tronix
30.11.2017, 15:35
Там была симуляция. Я что-то не могу просимулировать этот код.

HardWareMan
30.11.2017, 17:51
Почему не могёшь? Сигналы стандартные делай и все.

Tronix
30.11.2017, 17:58
Почему не могёшь?

Нуб потому что :) Вообще, можно модуль на верилоге сделать top level? Я так сделал, pin assigment раскидал пины с названиями как в input/output после module. Дальше CLK идет клок, делаю nRST вниз, потом nCS вниз, потом nWR вниз, на данных - 0xFFh и ничего на выходах :)

HardWareMan
30.11.2017, 18:05
Обновил тот пост. Симуляцию добавлю сюда:
http://jpegshare.net/images/05/f6/05f66ba0c7307e7984b54b5838426a22.png

- - - Добавлено - - -


Вообще, можно модуль на верилоге сделать top level?
Можно. В этом проекте у меня так и было. Можно сделать схему, для верилога создать символ и положить его на схему. А на схеме уже пины расключить. Но у меня там .v топлевел.

Tronix
30.11.2017, 18:09
Обновил тот пост. Симуляцию добавлю сюда:

Вот спасибо. АААаа, так nRESET активный высокий уровень, а я его вниз жал наоборот.

HardWareMan
30.11.2017, 18:15
Вот спасибо. АААаа, так nRESET активный высокий уровень, а я его вниз жал наоборот.
Ну у нас там же Z80-like, а для ВМ80 и ВВ55 инвертится. Рассчитывалось, что не только для МХ2, хотя я уже и не помню. Теоретически можно и убрать инверсию, но на плате она есть, вроде.

- - - Добавлено - - -

А еще, n приставка у сигналов означает инверсию. Ну это так, для себя и для вас (в именах не желательны спецсимволы просто). Активный это как раз низкий, неактивный - высокий. Активный - это когда сигнал влияет на схему же.

Tronix
30.11.2017, 18:18
Все правильно, это я в трех соснах заблудился просто. Прошу прощения.

HardWareMan
30.11.2017, 18:27
Tronix, таки симулируется?

Tronix
30.11.2017, 18:45
Tronix, таки симулируется?

Симулируется! Ну переглючило меня с ресетом просто. Взглянул на картинку и сразу понял. Спасибо!

- - - Добавлено - - -

Еще вопрос - а у вас входящая частота 10МГц, то есть делится на 15 и на 13?

HardWareMan
30.11.2017, 18:57
Еще вопрос - а у вас входящая частота 10МГц, то есть делится на 15 и на 13?
Нет. Делитель частоты вот такой:
(((Pre[3] & Pre[2] & Pre[1]) | Ctrl[1]) & Pre[0])
А теперь разберем скобки:
(
(Pre[3] & Pre[2] & Pre[1]) | Ctrl[1]
) & Pre[0]
Т.е., если Ctrl[1] = 0, то стэйт машина щелкает когда делитель Pre[3:0] = 4'b1111, или делит тактовую на 16.
Если Ctrl[1] = 1, то старшие биты делителя Pre[3:1] маскируются и учитывается только млаший Pre[0] = 1'b1, или делит на 2.

Т.е., при 10МГц тактовой, SLOW (по сбросу) будет 625кГц а FAST 5МГц. Можно подать 5МГц и тогда нижняя будет ниже рекомендуемых 400кГц. Добавить еще один бит в делитель не позволяет EPM3032. В EPM3064 можно его добавить.

Tronix
30.11.2017, 19:23
Т.е., при 10МГц тактовой, SLOW (по сбросу) будет 625кГц а FAST 5МГц. Можно подать 5МГц и тогда нижняя будет ниже рекомендуемых 400кГц. Добавить еще один бит в делитель не позволяет EPM3032. В EPM3064 можно его добавить.

Не пойму немного - сначала же выполняется (Pre[3] & Pre[2] & Pre[1]) | Ctrl[1]. По идее тут же не важно что будет в скобках, так как 1 or 1 = 1 ровно как и 0 or 1 = 1.

Я, в принципе, для IBM PC прикидываю, там 14,31818 MHz. Добавил еще один бит в делитель, убрав красный светодиод и сократив Ctrl[3:0] до Ctrl[2:0]. Извиняюсь за офтоп с IBM PC.

HardWareMan
30.11.2017, 19:38
Ctrl[1] это бит скорости. И по сбросу он =0, поэтому не маскирует старшие биты делителя. Это же видно по симуляции. А потом, ты туда 1 записал и понеслась на ускоренном. Не забудь этот бит добавить внутрь скобок к уже имеющимся.

Tronix
05.12.2017, 16:25
Спаял - не работает :smile:
Извиняюсь за офтоп со своим IBM XT, если грубо нарушаю, то может быть отрезать в другой раздел или, не знаю. Простите модераторы.

Просто посылка 10 байт от 1 до 10 выглядит так:

https://habrastorage.org/webt/of/lc/fp/oflcfpwyhkuqk_5nmeopcb567v0.png

В цикле послал байт в порт данных, жду пока сбросится BUSY в порту управления/статуса, шлю следующий. С другой стороны, если ПО "извне" игнорит BUSY и лупит подряд в порт данных, то передаются только "хорошие байты", но остальные есстественно теряются. Из тех же 10-ти байт передаются три нормальных байта - 0x03,0x05,0x09 (к примеру).

module MX2_CPLD(
// Системные
input Clk, // Входная частота 14.31818 МГц
input nRes, // Входной сигнал сброса, активный уровень лог.0
input nRD, // Вход строба чтения
input nWR, // Вход строба записи
input nCS, // Вход выбора контроллера
input Adr, // Вход адреса данные/управление
inout [7:0]Dat, // Шина данных
// SPI
output nSEL, // Выходной сигнал выбора карты
output reg SCK, // Выход тактовой частоты SPI
input MISO, // Вход данных SPI
output MOSI, // Выход данных SPI
output nRED, // Выход управления красным светодиодом
input nINS // Вход датчика вставления карты
);
// Внутренние регистры
reg [5:0]Pre; // Делитель частоты
reg [2:0]Ctrl; // Регистр управления
reg [7:0]Data; // Регистр данных
reg [2:0]Bits; // Счетчик сдвигаемых бит
reg RMISO; // Защелка сигнала MISO
reg BUSY; // SPI занят передачей
// Комбинаторика
assign nSEL = ~Ctrl[0]; // Выбор карты
assign nRED = ~Ctrl[2]; // Красная лампочка
assign MOSI = Data[7]; // Выход MOSI SPI
assign Dat[7:0] = (~nCS & ~nRD) ?
(Adr) ? {~nINS,BUSY,3'h0,Ctrl[2:0]} : Data[7:0]
: 8'hZZ;
// Синхронная логика
always @(posedge Clk) begin
// Делитель частоты
Pre[5:0] <= Pre[5:0] + 6'h1;
// Запись в управление может происходить асинхронно
if (~nCS & ~nWR & Adr) Ctrl[2:0] <= Dat[2:0];
// Сигнал сброса имеет приоритет вне зависимости от выбранной скорости
if (~nRes)
begin
// Сброс действует на эти регистры
Ctrl[2:0] <= 3'h0;
Bits[2:0] <= 3'h0;
BUSY <= 1'b0;
SCK <= 1'b0;
end else begin
// Состояние SPI
if (BUSY)
begin
// Делитель частоты
if (((Pre[5] & Pre[4] & Pre[3] & Pre[2] & Pre[1]) | Ctrl[1]) & Pre[0])
begin
// SPI работает
if (SCK)
begin
// Сбрасываем такт
SCK <= 1'b0;
// Спад, поэтому сдвигаем
Data[7:0] <= {Data[6:0],RMISO};
// Считаем биты
Bits[2:0] <= Bits[2:0] + 3'h1;
// Это был 7й бит?
if (Bits[2] & Bits[1] & Bits[0]) BUSY <= 1'b0;
end else begin
// Устанавливаем такт
SCK <= 1'b1;
// Это фронт, поэтому сэмплируем вход
RMISO <= MISO;
end
end
end else begin
// Обнуляем счетчик бит
Bits[2:0] <= 3'h0;
// Запись в регистр данных возможна только если SPI не занят
if (~nCS & ~nWR & ~Adr)
begin
Data[7:0] <= Dat[7:0];
BUSY <= 1'b1;
end
end
end
end
// Конец
endmodule

Из изменений - убран зеленый светодиод, делитель на 32, Res активный по высокому уровню. Вроде все.

Вот еще меня смущает вопрос о назначении пинов (pin assigment). Там у epm3032 вроде нет разных банков IO, и я думал сначала что вообще пофигу, какой пин куда назначать. Но как оказалось - не пофигу. Я хотел сигналы SD вывести на "правую" сторону EPM, назначил их, но квартус при компиляции стал ругаться на тему что-то не может проложить (найти) путь от пина (или сигнала) такого-то до пина такого-то. Ладно, распихал пины более-менее последовательно, начиная с первого и до какого-то, скажем 27. Ругаться перестал и стал компилироваться. Странно, я такого не ожидал.

И еще опять по пинам. У EPM3032 есть "глобальные" пины - Global Clock. Туда приходит OSC 14,3 MHz, это Clk у меня. Дальше есть еще Global Clear - это у меня Res и Global OE - это у меня nCS. И есть еще Ded. input (pin 2). Я туда nRD посадил. В то время как nWR у меня на обычном IO пине. Думаю не может здесь что-то такого быть. Может лучше nRD то же на обычный IO повесить?



https://habrastorage.org/webt/zi/1c/i9/zi1ci9vj0zcw46y07nlplvlmni8.png

fifan
05.12.2017, 16:50
Tronix, не замарачивайся с распределением пинов. Глобальные лучше по назначению. Если программа ругается предупреждениями это не критично. Главное чтобы не было ошибок. Где какой банк используется я никогда не обращал внимания. Вот с этим проектом при переописании я сталкнулся с глюками. Потом мне подсказали, что не задействованные пины нужно переводить в третье состояние. И всё стало нормально работать.

HardWareMan
05.12.2017, 18:37
Tronix, ну а вопрос то в чем?

Tronix
05.12.2017, 18:42
Tronix, ну а вопрос то в чем?

Почему не работает....

zebest
05.12.2017, 20:55
ну а вопрос то в чем?
У меня вопрос по лампучкам
assign nRED = ~Ctrl[2]; // Красная лампочка
assign nGREEN = ~Ctrl[3]; // Зеленая лампочка
я не дальтоник, но в чем отличие при работе? У мну как бы одна, вот думаю, на какую лучше повесить

fifan
05.12.2017, 21:23
Там (http://www.spetsialist-mx.ru/index32.html) я есть легенда цвета светодиодов:
RED - сигнал обращения к карте ("0" - активация светодиода) - Operate;
GREEN - сигнал вставленной карты ("0" - активация светодиода) - Insert.

HardWareMan
05.12.2017, 22:43
Можно, кстати, применить инверсную логику, как в свичах: не горит - нет карты, горит - карта вставлена и не работает, мигает - карта работает. Тогда хватит одной лампочки, высвободится регистр (и одна LE).

roma
18.12.2017, 18:51
Я так не совсем и понял, достаточно ли ПЛИС EPM7032SLC44 или всё же нужна EPM7064SLC44 ?
Если достаточно - то не могли бы выложить прошивку?
И какие нужно сделать изменения на плате МХ2 от perestoronin ?
http://zx-pk.com/forum/viewtopic.php?f=7&t=466

fifan
18.12.2017, 21:34
достаточно ли ПЛИС EPM7032SLC44 или всё же нужна EPM7064SLC44?
Нужно было внимательнее читать тему. С ходу отвечу: на схемном вводе проект влезает только во вторую, на языке vhdl - в первую, т.е. требуется меньше ячеек. Я вроде пробовал оба варианта - работают.


Если достаточно - то не могли бы выложить прошивку?
Всё ж надо проштудировать всю тему, мне лень. Если не найдёшь - попроси ещё раз - сварганю.


И какие нужно сделать изменения на плате МХ2 от perestoronin ?
http://zx-pk.com/forum/viewtopic.php?f=7&t=466
Указанная плата - версии 2.2. Я допаивал держатель карты с деталями на монтажное поле платы версии 2.0. Вроде фото платы выкладывал - не сохранилось.
Опишу здесь по схеме (http://www.spetsialist-mx.ru/images/Spetsialist_MX2_SD.png): главное сначала разместить держатель карты на монтажном поле. К его выводам по схеме подпаять резисторы. Резисторы со светодиодами разместить где угодно, можно вне платы. Стабилизатор 5В -> 3,3В с обвязкой тоже где-нибудь разместить поблизости.

А можно вообще по современному - купить у китайцев плату (https://ru.aliexpress.com/item/Free-shipping-SD-card-module-for-arduino/2046499166.html?ws_ab_test=searchweb0_0,searchweb2 01602_0_10152_10065_10151_10344_10068_10345_10342_ 10343_51102_10340_10341_10543_10609_10541_10084_10 083_10307_10301_10611_10610_10312_10313_10059_1031 4_10534_100031_10604_10603_10103_10607_10606_10605 _10594_10142_10107_10125,searchweb201603_0,ppcSwit ch_0&algo_expid=e202942b-ccac-4d92-8dd8-aad46a97c14c-0&algo_pvid=e202942b-ccac-4d92-8dd8-aad46a97c14c&rmStoreLevelAB=5), можно даже с держателям microSD карты (https://ru.aliexpress.com/item/Micro-SD-card-mini-TF-card-reader-module-SPI-interfaces-with-level-converter-chip-for-arduino/32708933868.html?spm=a2g0v.10010108.1000014.5.f4ae 8112CdHON&traffic_analysisId=recommend_3035_null_null_null&scm=1007.13338.80878.000000000000000&pvid=663106bc-d05e-4610-9bbe-3ae63ab55515&tpp=1). В этом случае всё на схеме (кроме светодиодов с их резисторами) уже есть, стабилизатор не нужен, модуль своими контактами припаивается сразу на выводы панельки плисины и плюс два вывода на питание.

roma
19.12.2017, 11:04
Прошивку для EPM7032SLC44 я не нашёл, если не лень, пожалуйста выложи тут ещё раз.

По поводу самого контроллера - то хотелось бы использовать всё что уже разведено на плате МХ2 версии 2.2 по максимуму.
Поэтому и спросил что возможно кто то уже запустил последнюю версию контроллера на плате МХ2 версии 2.2 с ПЛИС EPM7032SLC44.
А то всё было куплено, собрано и впаяно ещё 2 года назад, поэтому хотелось бы завершить конструкцию ...

fifan
19.12.2017, 13:34
Схему на самой плате Специалиста МХ2 я не паял. Ну давайте посмотрим вашу схему (http://www.spetsialist-mx.ru/schemes/SpetsialistMX2.pdf) (2.2.). Для реализации указанной переделанной схемы что нужно сделать:
1. Удалить резисторы R37...R37, R41, R42;
2. Удаляем транзистор VT5 и диод VD7;
3. Если уже есть китайский модуль - не нужен стабилизатор DA2 и конденсатор C41;

Паям новую обвязку на монтажном поле по данной схеме (http://www.spetsialist-mx.ru/images/Spetsialist_MX2_SD.png):
1. Резисторы на сигналы на держатель SD карты 1,7 кОм, 3,3 кОм и 1 кОм;
2. Сам держатель SD карты.

Если уже есть готовый упомянутый мною раннее SD модуль, то паять только выводы модуля непосредственно к ПЛИС. Забыл упомянуть, что не на всех модулях есть выведенный сигнал вставленной карты (/INS).

fifan
19.12.2017, 21:09
Вот проект на Верилоге для ПЛИС EPM7032SLC44 от HardWareMan'а. Файл для прошивки - spets_mx2_sd_v.pof.

roma
31.01.2018, 10:24
Сделал изменения на моей плате, а именно:
на 43 пин EPM7032SLC44 вместо 40 мгц подал 10 мгц
на 41 пин EPM7032SLC44 вместо U2 подал U3
выпаял резисторы R33-36, R41, R42, транзистор VT5, диод VD7 и стабилизатор DA2
подключил внешний китайский кардридер со встроенным стабилизатором на 3.3 В.
вместо контакта наличия карты запаял переключатель
прошил EPM7032SLC44
перепрошил ПЗУ на spets_mx2.rar http://zx-pk.ru/attachment.php?attachmentid=59655&d=1486293725

СД контроллер не работает ... При разомкнутом датчике карты пишет вставьте карту, при замыкании датчика пишит "инициализация" и так и висит.
Если разомкнуть датчик то снова пишет вставьте карту, если замкнуть то снова пишит "инициализация" ...

Вопросы:
- нужно ли подключать сигнал RD на 14 пин EPM7032SLC44 ?
- совместимы ли приложенная прошивка для EPM7032SLC44 с лоадером из spets_mx2.rar , не нужно ли что ещё что переделывать или инвертировать ?
- что можно посмотреть в памяти или какие сигналы проконтролировать в контроллере ?

Да, при размыкании датчика карты вижу короткую серию импульсов на линии CLSD карты. Затем при выборе директивы U и появлении надписи "инициализация" никаких импульсов ни на каких сигналах карты не наблюдаю, либо их очень мало и они короткие, что просто не замечаю.
Импульсы проскакивают только при размыкании контактов датчика ...

fifan
31.01.2018, 14:46
По полочкам.
1. Нужно собрать схему по данному рисунку (http://www.spetsialist-mx.ru/images/Spetsialist_MX2_SD.png). Никаких дополнительных сигналов, кроме указанных на схеме, инвертирования сигналов выполнять не нужно.
2. Сигнал /U3 не анализируется и SD контроллер работает только по /U6.
3. Вроде бы без сигнала /RD должно работать.
4. Если нет реакции на инициализацию карты, то наверное нужно поменять карту. Лучше скажет HardWareMan какие карты у него в лоадере поддерживаются, но я бы порекомендовал карты не более 2 ГБайт SD/SDHC.
5. Если всё таки лоадер заработает, но не загрузится система, то наличие в корне SD карты файла bios.bin обязательно. Я в качестве bios.bin использую альтернативный монитор с записанным с адреса D000 загрузчиком RKS файлов собственного изготовления.
6. Вот последняя прошивка (см. аттач). Я всё пытаюсь вывести красивую надпись "Специалист МХ2" при сбросе компьютера. Она у меня появляется на сотни миллисекунд, ели уловимые глазом. Эту надпись выводил Vinxru когда-то в своём MXOS. В эмулляторе всё работает.
7. Специально я сигналы осциллографом не смотрел и так запустилось.
8. Какая прошивка используется в ПЛИС? Какая ПЛИС установлена?

roma
31.01.2018, 15:16
Использую прошивку для EPM7032SLC44 от HardwareMan которую ты выложит двумя постами выше.
Поэтому и спросил совместима ли она с твоим лоадером?

Искажённую и еле заметную надпись "Специалист МХ2" однажды видел при сбросе компьютера.

И с прошивкой из первой страницы у меня сложилось впечатление что компьютер теперь стартует не с первого раза.
Сейчас иногда приходится включать по 2-3 раза чтобы выдало сообщение Монитора, раньше такого вроде не было ...

И после старта компьютера при нажатии сброса надпись Монитора теперь появляется только через 4-5 секунд.
Что компьютер делает эти 4-5 секунд не понятно ...

Вечером испытаю твой новый ROM.

fifan
31.01.2018, 15:39
Поищу у себя EPM7032SLC44, ведь именно эту прошивку никто не испытывал.
Именно 5 секунд он и должен выводить надпись, но он держит это время чёрный экран.

roma
01.02.2018, 18:26
С последней прошивкой для РОМ, компьютер не показывает содержимое РАМ-диска.
По Х переход в МХ есть. А вот по Ф6 на рам-диск не переключается.

Также коммандере в РОМ из первой страницы есть баг: отображаются но не запускаются программы из внешнего флэш диска, которые благополучно запускаются из оболочки по директиве @ , к примеру Zoo.

И прошивка для EPM7032SLC44 от HardwareMan так у меня и не заработала ...

fifan
01.02.2018, 20:30
Интересно, а что мы хотим увидеть в RAM-диске? Только сбросили/включили комп, как бы весь RAM-диск пустой, вернее сказать там нет файловой системы, данные то может и есть хоть и хаотичные.
Надпись RAM_V6.4 - это и есть сигнализация пользователю, что он находится в RAM-диске и он как я писал выше пустой. F6 - переключение в DOS, в нашем случае MX-DOS, у Вас подключен дисковод? Ну а что тогда надеемся увидеть? По F4 - переключение на ROM-диск.
В каком коммандере? Если имеется в виду SpetsCommander, то я его благополучно забросил, я вообще не уверен что там что-то запустится.

Я уже сказал, что новая прошивка с RAMFOS версии 6.4, а его я не переделал и оставил как есть. Внимательно читаем анатацию к нему (http://zx-pk.ru/threads/27597-syabr-sborka-i-naladka.html?p=933821&viewfull=1#post933821).

Наверное, прошивка для EPM7032SLC44 не рабочая. Её я повторяю не проверял. По ней вопросы к автору - HardWareManу.

Прояснялово по ПО:
В ближайшее время я допишу MX-DOS версии 4, но для Сябра, где SD контроллер от Vinxru. Я решил вместо MX-DOS (операционка, которая переписывается с дискеты в ОЗУ с адреса D400) вставить операционку, которая не будет поддерживать дисковод и будет сразу работать с SD картой, RAM/ROM-дисками. И там все процедуры общения с SD картой очень просты и не занимают много места. Я думаю в 5 кБайт я уложусь.
В Специалисте МХ2 исходный текст ПО для SD карты (я основываюсь на лоадере от HardWareMan) занимает много места и не влезет в 5 кБайт. Единственно я для Специалиста МХ2 написал брайзер RKS файлов ("Standard Spetsialist Browser версия для Специалиста_МХ2"), который входит в состав монитора (файл bios.bin). Его можно загрузить директивой U и запустить по GD000. Я так и делаю.

roma
01.02.2018, 21:10
Я имел ввиду переключение в ДОС и показ РОМ-диска.

Прошил твою последнюю прошивку с RAMFOS версии 6.4 заново и понял что в прошивке профиксены сканкоды для Ф-клавиш и теперь для входа в ДОС нужно жать Ф6, а не Ф8 как в старой прошивке. По Ф6 всё работает.

А нельзя ли из прошивки совсем убрать попытку показа надписи "Специалист МХ2" и вернуть всё к первоначальному виду, но с лоадером для СД-карты по команде "U" ?
А то сейчас компьютер стартует со 2-3 раза и при нажатии сброс 5 секунд чёрный экран ...

И не мог бы ты всё же проверить прошивку от HardWareManа для EPM7032SLC44 ?
Чтобы точно знать у меня проблемы с железом или прошивка для EPM7032SLC44 просто не рабочая ...

fifan
01.02.2018, 21:21
Какой клавой пользуешься? PS/2? Если да, то всё правильно. При включении адаптер клавы переходит в МХ режим, где верхний ряд сдвинут. Нужно сначала перейти в Std режим. Блин железки нет под рукой, точно не скажу, но вроде Print Screen или Scroll Lock режимы переключает. Индикация MX режима - светодиод Num Lock, вроде.

Ладно прошивку перепишу. EPM7032SLC44 вроде у меня нет, хотя поищу.

fifan
02.02.2018, 22:56
Перезалил прошивку ПЗУ (http://zx-pk.ru/threads/27418-rabota-s-sd-kontrollerom-na-spetsialiste_mkh2.html?p=948317&viewfull=1#post948317), убрал задержку и не работающий логотип.

Я не вижу смысла прошивать EPM7032SLC44, для начала попросим автора (HardWareMan) исправить её без переделки текущей схемы SD контроллера (http://www.spetsialist-mx.ru/schemes/Spetsialist_MX2_SD.png).

Я пытался уменьшить прошивку EPM7064SLC44 до размера EPM7032SLC44 (текущее значение 55% ячеек). Но пока не получилось. В начале этой темы были первые эксперименты без применения сигнала /RD, может убрать соответствующие ячейки и уложимся в 32?! Тем более на схеме контроллера нет сигнала /RD.

- - - Добавлено - - -

Проверяю описание пинов двух проектов (7032/7064), есть расхождения пинов, попробую переписать проект. Завтра, roma, проверишь новую прошивку.

- - - Добавлено - - -

Нужно изменить схему. /RD подключить актуально. /U6' мы не используем. Завтра перерисую схему.

fifan
03.02.2018, 09:18
roma, проверь эту прошивку плисины, ещё запаяй сигнал /RD, как указано на схеме (http://www.spetsialist-mx.ru/schemes/Spetsialist_MX2_SD.png). Вывод 14 на плисине тут (http://zx-pk.ru/threads/27418-rabota-s-sd-kontrollerom-na-spetsialiste_mkh2.html?p=901944&viewfull=1#post901944) нарисовано как найти.

roma
05.02.2018, 00:11
Последняя прошивка ПЗУ работает. На сброс сейчас реагирует мгновенно.

Запаял ещё сигнал RD. Со старой прошивкой от HardWareMan при вызове директивы U загораются оба светодиода.
Но дальше ничего не происходит, висит надпись "инициализация."
А вот с новой прошивкой для EPM7032SLC44 при вызове директивы U загорается только зелёный свтодиод.
Дальше также ничего не происходит, висит надпись "инициализация."

Но как я уже писал, возможно у меня к.н. аппаратная проблема, поэтому было бы лучше проверить на компьютере,
который работает с EPM7064SLC44

PVV
05.02.2018, 11:59
Проверить работает вообще SD интерфейс можно так - на держателе карты, без карты естественно!, закоротить MOSI и MISO, затем хоть какой-то своей программой(я делал из sdOS), хоть из монитора(реально не проверял, но не вижу причин почему это не должно сработать), писать один байт в порт SD, и затем, из этого порта читать(вывести дамп), при рабочем SD интерфейсе
читаться должно то, что туда перед этим записано, с задержкой в один шаг записи, те записал 0х55, прочитал первый раз, будет 0хFF, записал 0хАА, прочитал 0х55, записал 0х33, прочитал 0хАА...

В этой прошивке используются адреса 0xF010/0xF011, где F011 это порт конфигурации, сюда можно записать (монитором MF011) разные значения, и посмотреть, работает ли чип селект карты (тестером на держателе карты) и светодиоды.
F010 это порт данных, сюда записать, а затем от сюда же прочитать что-либо...(из монитора MF010 - пишем, DF010,F010-читаем).
Можно проверить только тракт приема, для этого MISO посадить на землю (можно просто, а можно и через резистор) и при выполнении запись, а затем чтение, должен читаться 0х00, без этой закоротки должен читаться 0хFF.

fifan
05.02.2018, 12:10
дальше ничего не происходит, висит надпись "инициализация."
Не стоит ли сменить карту? Желательно объёмом до 2 ГБайт.

было бы лучше проверить на компьютере, который работает с EPM7064SLC44
Я попробую и заодно EPM7032SLC44 нашёл.

- - - Добавлено - - -


В этой прошивке используются адреса 0xF010/0xF011.
Да это значение выбрано не случайно. В МХ режиме это адрес контроллера дисковода, если что почти не занят. В Std режиме этот адрес занят портами "программатора", вот поэтому у меня по директиве @ комп виснит - занято Flash-диском - надо что-то думать.

fifan
06.02.2018, 20:25
EPM7032SLC44 я прошил и проверил - прошивка для этой плисины не рабочая. Нужно просить HardWareMan'а её допилить без переделки схемы.

HardWareMan
06.02.2018, 21:16
Что именно вы хотите?

roma
06.02.2018, 22:05
Если можно сделать рабочую прошивку для EPM7032SLC44 - то сделать, если нельзя - то значит нельзя, придётся тогда всем покупать EPM7064SLC44.
Просто изначально два года назад многие купили EPM7032SLC44, втом числе и я, и эта ПЛИС просто лежала и ждала своего часа.
Жалко будет просто выкинуть ...

HardWareMan
07.02.2018, 09:56
А что именно не работает?

roma
07.02.2018, 10:14
Запаял ещё сигнал RD. Со старой прошивкой от HardWareMan при вызове директивы U загораются оба светодиода.
Но дальше ничего не происходит, висит надпись "инициализация."
А вот с новой прошивкой для EPM7032SLC44 при вызове директивы U загорается только зелёный свтодиод.
Дальше также ничего не происходит, висит надпись "инициализация."


У меня так.

fifan
07.02.2018, 12:17
Наверное нет вообще приёма/передачи битов. У меня при работе с EPM7064SLC44 (прошивка с схемного ввода) два светодиода загораются, далее всё загружается хорошо. В загружаемый файл bios.bin (http://zx-pk.ru/threads/27418-rabota-s-sd-kontrollerom-na-spetsialiste_mkh2.html?p=948528&viewfull=1#post948528) мною зашит монитор с браузером RKS файлов, который запускается после загрузки указанного файла по директиве GD000.

С прошивкой на верилоге у меня как и у roma загорается зелёный светодиод и высвечиваются две первые строки лоадера:
*BIOS loader v.5*
Инициализация...
и всё на этом. Ну можно ещё вытащить карту - печатается предложение вставить карту.

Текущая рабочая схема вот (http://www.spetsialist-mx.ru/schemes/Spetsialist_MX2_SD.png). Адрес работы интерфейса - f010/f011.
Я менял в твоём источнике (http://zx-pk.ru/threads/27418-rabota-s-sd-kontrollerom-na-spetsialiste_mkh2.html?p=901849&viewfull=1#post901849):

assign Dat[7:0] = (~nCS & nWR) ? (Adr) ? {~nINS,BUSY,2'h0,Ctrl[3:0]} : Data[7:0] : 8'hZZ;
на:
assign Dat[7:0] = (~nCS & nWR) ? (Adr) ? {nINS,BUSY,2'h0,Ctrl[3:0]} : Data[7:0] : 8'hZZ;

не помогло.

roma
07.02.2018, 16:11
Да, все сигналы к карте неизменны после вызова директивы "U".
Несколько импульсов по линии CLC проскакивают только в момент вынимания карты ...

HardWareMan
07.02.2018, 20:06
На соответствие битов в управляющем регистре сверяли?

roma
08.02.2018, 17:03
На соответствие битов в управляющем регистре сверяли?

А поподробнее можно что где проверять или смотреть ?

HardWareMan
08.02.2018, 19:26
Версия Loader'а какая выводится? Ну и пора бы сверить стандарты, может?

fifan
08.02.2018, 20:09
Твоя версия 5-я. Какие стандарты?

HardWareMan
08.02.2018, 22:28
Загрузчик с приветствием "*BIOS loader v.5*" использует следующие ресурсы:


SPIData: .equ 0F010h ; F010h - регистр данных SPI
SPICtrl: .equ 0F011h ; F011h - регистр управления и статуса
// SPICtrl
; System Loader
; D7 - 0=INS D6 - 1=BSY D5=0 D4=0 D3 - 0=GRN D2 - 0=RED D1 - 1=HS D0 - 1=CS

А на сайте fifan'а вот так:

При чтении из регистра управления распределение битов таково:
D0 - признак работы карты ("0" - карта не активна и "1" - карта активна);
D1 - текущая скорость обращения с картой ("0" - 312,5 кГц и "1" - 2,5 МГц);
D6 - признак вставленной карты ("0" - вставлена и "1" - гнездо пусто);
D7 - бит равен "0" - происходит процесс сдвига.

При записи в регистр управления распределение битов таково:
D0 - это выбор карты ("0" - карта не выбрана и "1" - карта выбрана);
D1 - бит выбора скорости тактов SPI ("0" - 312,5 кГц и "1" - 2,5 МГц);
D2 - RED - сигнал обращения к карте ("0" - активация светодиода) - Operate;
D3 - GREEN - сигнал вставленной карты ("0" - активация светодиода) - Insert.

Давайте договоримся об каком-то едином формате бит этого регистра. Я предлагаю положительную логику сигналов.

RD WR RES
D7 INS x x
D6 BSY x x
D5 0 x x
D4 0 x x
D3 GRN GRN 0
D2 RED RED 0
D1 SPD SPD 0
D0 SEL SEL 0

INS: 0 - пусто, 1 - вставлена карта
BSY: 0 - готов, 1 - занят сдвигом
GRN: 0 - выключен, 1 - горит зеленый LED
RED: 0 - выключен, 1 - горит красный LED
SPD: 0 - низкая скорость, 1 - высокая скорость
SEL: 0 - карта не выбрана, 1 - карта выбрана
В модели как раз вот такие данные:

// Комбинаторика
assign nSEL = ~Ctrl[0]; // Выбор карты
assign nRED = ~Ctrl[2]; // Красная лампочка
assign nGREEN = ~Ctrl[3]; // Зеленая лампочка
assign MOSI = Data[7]; // Выход MOSI SPI
assign Dat[7:0] = (~nCS & ~nRD) ?
(Adr) ? {~nINS,BUSY,2'h0,Ctrl[3:0]} : Data[7:0]
: 8'hZZ;

И это не соответствует лодырю версии ".5". Пересобранный лодырь во вложении.

fifan
09.02.2018, 07:09
Начну переделывать: информацию на сайте и схемный ввод проекта ПЛИС на EPM7064SLC44.

- - - Добавлено - - -

HardWareMan, вопрос по сигналу SD_CS. Непосредственно выбор SPI на контактах SD карты активный уровень ноль или единица? В остальном схемный ввод соответствует.
Потом по схеме карта вставлена - входной пин замыкается на землю, у тебя наоборот - нам схему переделывать?

HardWareMan
09.02.2018, 09:37
Для активации карты и светодиодов нужно лог.0, замыкающий контакт в гнезде датчика вставления - тоже лог.0. Но для программы эти сигналы инвертированы. Для этого на выходах светодиодов и выбора карты стоят инверторы. И на входе сигнала INS.

fifan
09.02.2018, 09:54
С INS я понял, я про выборку SD карты, сигнал /CSSD на схеме (http://www.spetsialist-mx.ru/schemes/Spetsialist_MX2_SD.png), он активный какой?

roma
09.02.2018, 10:07
Если можно, лучше скорректировать программную часть, чем аппаратную . По возможности без дополнительных инверторов ...

fifan
09.02.2018, 10:28
Инверторы будут в плисине, не переживай.

roma
09.02.2018, 10:48
Так итак места в EPM7032SLC44 еле хватает, или эти инверторы будут только в EPM7064SLC44 ?

fifan
09.02.2018, 12:10
Так итак места в EPM7032SLC44 еле хватает, или эти инверторы будут только в EPM7064SLC44 ?
Да. В EPM7032SLC44 нет места и HardWareMan решил переделать ПО, не трогая схему.

HardWareMan
09.02.2018, 13:23
Вот проект с ЕРМ7032:
http://jpegshare.net/images/86/a4/86a4a36f24740b914e2327d745a62a39.png
Он соответствует информации из этого поста (http://zx-pk.ru/threads/27418-rabota-s-sd-kontrollerom-na-spetsialiste_mkh2.html?p=949606&viewfull=1#post949606), которую я предлагаю к унификации. Все необходимые инверторы и прочее уже присутствуют в проекте для ЕРМ7032.

fifan
09.02.2018, 13:57
Чуть позже выложу прошивку для МХ2, начинаю браузер переделывать.

- - - Добавлено - - -

Прошивку сделал, но она не работает (loader) в эмуляторе b2m. Можно попробывать прошить ПЗУ на свой страх и риск. bios.bin выложу позже.

HardWareMan
09.02.2018, 14:54
В эмуле b2m тоже следует привести секцию SD интерфейса в порядок.

fifan
09.02.2018, 15:00
В эмуле b2m тоже следует привести секцию SD интерфейса в порядок.
Я там не понимаю, как сконфигурировать файл клона Специалиста МХ2. Адрес интерфейса не был изменён.

b2m
09.02.2018, 15:26
Я там не понимаю, как сконфигурировать файл клона Специалиста МХ2. Адрес интерфейса не был изменён.
Красное убрать, зелёное добавить:

bios : Memory {
rom="Specialist\specsvga.bin"
rom="Specialist\spets_mx2all.bin"
}
...
mmport : MemMap2 {
map[00-03]=sys.data
map[04-07]=app.data
map[08-0B]=dsk.data
map[0C-0F]=tim.data
map[10]=sdcard.data8
map[11]=81
map[12]=dsk.side
map[13]=dsk.drive
map[14]=sdcard.data8
map[15]=40
map[16]=sdcard.data8
map[17]=40
map[18-1B]=vidcolor
map[1C-1F]=mode
}

fifan
09.02.2018, 16:51
Спасибо b2m! Всё заработало. Оболочка загружается.

roma
09.02.2018, 19:06
А прошивку для EPM7032SLC44 нужно менять? У меня на реальном железе не работает.
И зелёный светодиод сейчас не загорается, когда установлена карта. Загорается только красный светодиод когда вызываешь "U" .
Но дальше не грузится ...

roma
13.02.2018, 10:32
Fifan, у тебя на реальном железе с EPM7032SLC44 заработало? У меня с твоей последней прошивкой не работает. Или нужен новый bois.bin на сд карте?

fifan
13.02.2018, 11:23
нужен новый bois.bin на сд карте?
А высвечивается надпись "загрузка системы?". Если да, то действительно интерфейс работает. Далее под системой автор подразумевает именно файл bios.bin. Если его нет в корневом каталоге, то выводится ошибка.
bios.bin - это общая загружаемая прошивка объёмом до 12 кБайт и может содержать любую копию ПЗУ любого клона Специалиста. Я в свою прошивку воткнул Монитор-4 объёмом 4 кБайт и свой браузер rks файлов, написанный специально для Специалиста МХ2. Свой bios.bin я выложу позже.

У меня с твоей последней прошивкой не работает.
И не будет, там я инветировал один из сигналов и биты управляющего регистра не соответствуют. Вот попробуй эту, я всё испытаю у себя через пару дней.
Вот источник прошивки:

// Контроллер SPI для Специалист-MX2 на EPM7032SLC44
module spets_mx2_sd_v(
// Системные
input Clk, // Входная частота 10МГц
input nRes, // Входной сигнал сброса, активный уровень лог.0
input nRD, // Вход строба чтения
input nWR, // Вход строба записи
input nCS, // Вход выбора контроллера
input Adr, // Вход адреса данные/управление
inout [7:0]Dat, // Шина данных
// SPI
output nSEL, // Выходной сигнал выбора карты
output reg SCK, // Выход тактовой частоты SPI
input MISO, // Вход данных SPI
output MOSI, // Выход данных SPI
output nRED, // Выход управления красным светодиодом
output nGREEN, // Выход управления зеленым светодиодом
input nINS, // Вход датчика вставления карты
// Резерв
input MX, // ?
input U6 // ?
);
// Внутренние регистры
reg [3:0]Pre; // Делитель частоты
reg [3:0]Ctrl; // Регистр управления
reg [7:0]Data; // Регистр данных
reg [2:0]Bits; // Счетчик сдвигаемых бит
reg RMISO; // Защелка сигнала MISO
reg BUSY; // SPI занят передачей
// Комбинаторика
assign nSEL = ~Ctrl[0]; // Выбор карты
assign nRED = ~Ctrl[2]; // Красный светодиод
assign nGREEN = ~Ctrl[3]; // Зеленый светодиод
assign MOSI = Data[7]; // Выход MOSI SPI
assign Dat[7:0] = (~nCS & ~nRD) ? (Adr) ? {~nINS,BUSY,2'h0,Ctrl[3:0]} : Data[7:0] : 8'hZZ;
// биты управляющего регистра:
// 7 - ~nINS Вход датчика вставления карты с инверсией
// 6 - BUSY SPI занят передачей
// 5 - 0
// 4 - 0
// 3 - nGREEN Зеленый светодиод
// 2 - nRED Красный светодиод
// 1 - 0
// 0 - nSEL Выбор карты с инверсией
// Синхронная логика
always @(posedge Clk) begin
// Делитель частоты
Pre[3:0] <= Pre[3:0] + 4'h1;
// Запись в управление может происходить асинхронно
if (~nCS & ~nWR & Adr) Ctrl[3:0] <= Dat[3:0];
// Сигнал сброса имеет приоритет вне зависимости от выбранной скорости
if (~nRes)
begin
// Сброс действует на эти регистры
Ctrl[3:0] <= 4'h0;
Bits[2:0] <= 3'h0;
BUSY <= 1'b0;
SCK <= 1'b0;
end else begin
// Состояние SPI
if (BUSY)
begin
// Делитель частоты
if (((Pre[3] & Pre[2] & Pre[1]) | Ctrl[1]) & Pre[0])
begin
// SPI работает
if (SCK)
begin
// Сбрасываем такт
SCK <= 1'b0;
// Спад, поэтому сдвигаем
Data[7:0] <= {Data[6:0],RMISO};
// Считаем биты
Bits[2:0] <= Bits[2:0] + 3'h1;
// Это был 7й бит?
if (Bits[2] & Bits[1] & Bits[0]) BUSY <= 1'b0;
end else begin
// Устанавливаем такт
SCK <= 1'b1;
// Это фронт, поэтому сэмплируем вход
RMISO <= MISO;
end
end
end else begin
// Обнуляем счетчик бит
Bits[2:0] <= 3'h0;
// Запись в регистр данных возможна только если SPI не занят
if (~nCS & ~nWR & ~Adr)
begin
Data[7:0] <= Dat[7:0];
BUSY <= 1'b1;
end
end
end
end
// Конец
endmodule

roma
13.02.2018, 17:26
Загрузка заработала с EPM7032SLC44 , пишет загружаю систему, найден MBR, надена цепочка FAT12/FAT16, загружаю BOIS.BIN, загружаю FAT16 цепочку, загружаю оболочку, загрузка оболочки завершена, но затем выскакивает в BIOS и пишет PROGRAM?
Иногда пишет ошибка при загрузке оболочки. Видимо работает не очень стабильно ...
Свтодиоды оба не работают.

fifan
13.02.2018, 18:05
но затем выскакивает в BIOS и пишет PROGRAM?
А что значит "но"? Это и есть правильная работа загрузки системы. Она, система загрузилась и высветилось приглашение.

- - - Добавлено - - -


Светодиоды оба не работают.
Как они подключены? должны анодами через резисторы к плисине (автор переделал). Я не знаю как в программе должны зажигаться светодиоды, может автор лоадера скажет?

HardWareMan
13.02.2018, 19:47
Стоп. Светодиоды анодами к + через сопротивления, а катодами к CPLD. В последнем проекте именно под это соединение. И в программе тоже.

- - - Добавлено - - -

Ну или по твоей схеме:
http://www.spetsialist-mx.ru/schemes/Spetsialist_MX2_SD.png

fifan
13.02.2018, 20:28
Стоп. Светодиоды анодами к + через сопротивления, а катодами к CPLD. В последнем проекте именно под это соединение. И в программе тоже.
Читаем твои допущения (http://zx-pk.ru/threads/27418-rabota-s-sd-kontrollerom-na-spetsialiste_mkh2.html?p=949606&viewfull=1#post949606):
GRN: 0 - выключен, 1 - горит зеленый LED
RED: 0 - выключен, 1 - горит красный LED

HardWareMan
13.02.2018, 23:55
Читаем твои допущения (http://zx-pk.ru/threads/27418-rabota-s-sd-kontrollerom-na-spetsialiste_mkh2.html?p=949606&viewfull=1#post949606):
GRN: 0 - выключен, 1 - горит зеленый LED
RED: 0 - выключен, 1 - горит красный LED
Да а в коде CPLD:

// Комбинаторика
assign nSEL = ~Ctrl[0]; // Выбор карты
assign nRED = ~Ctrl[2]; // Красный светодиод
assign nGREEN = ~Ctrl[3]; // Зеленый светодиод

fifan
14.02.2018, 09:08
Я тоже в версии для EPM7064SLC44 поставил инверторы на светодиоды, а roma пишет, что светодиоды не светятся никак.

HardWareMan
14.02.2018, 10:00
А пусть рома покажет фотографию, как он и чего там распаял.

roma
15.02.2018, 01:35
Оба светодиода у меня подключены анодами к +5 В, катодами через резисторы подключены к ПЛИС.
У меня обычная плата МХ2 версии 2.2. Я просто убрал на плате R33-R36 и подключил внешний китайский кардреадер.
Со старой прошивкой от HardWareMan оба светодиода работали, с последней от Fifan http://zx-pk.ru/attachment.php?attachmentid=64230&d=1518510193 оба светодида ни разу не загораются ...
Fifan - не мог бы ты выложить свой bios.bin для МХ2 с автоматической загрузкой оболочки.

fifan
15.02.2018, 16:24
не мог бы ты выложить свой bios.bin для МХ2 с автоматической загрузкой оболочки.
"Автоматической" интересное слово. Мы ж там набираем директиву U для запуска bios.bin, что тут автоматического? И я повторяюсь, что этим файлом может быть любая прошивка для Специалиста объёмом до 12 кБайт. Прилагаю свой файл bios.bin. Для его запуска после выполнения директивы U нужно ввести: F7 (в принципе можно нажать любую клавишу верхнего ряда, для выхода в командную строку), затем GD000 (запуск кодов с адреса D000). Вот так выглядит программа в эмуляторе, я добавил в имидж диска и bios.bin и свои любимые игры (файл SD6.img - образ SD карты).

64259

roma
15.02.2018, 16:45
А нельзя ли в bios.bin расположить пропатченный монитор, который автоматом загружает оболочку ? Чтобы не запоминать и не жать никакие кнопки ...

fifan
15.02.2018, 16:56
Пропатченный монитор только от HardWareMan - Монитор 4, ну такой же как при старте Специалиста МХ2. В текущей прошивке для Специалиста МХ2 нет места для моего браузера.

roma
15.02.2018, 17:59
Как я понял, загружеаемый bios.bin это образ из Монитор 4 + твой коммандер? После его загрузки с СД-карты управление передаётся монитору?
А нельзя ли передать управление на D000, чтобы автоматически запустить коммандер без всяких F7 и GD000 ?

fifan
15.02.2018, 19:22
Можно. Нужно заменить в прошивке (http://zx-pk.ru/threads/27418-rabota-s-sd-kontrollerom-na-spetsialiste_mkh2.html?p=949659&viewfull=1#post949659) байт по адресу 7233h с с0h на d0h. Проверил на эмуляторе - работает.

roma
15.02.2018, 20:16
Пропатчил в прошивке RОМ байт по адресу 7233h с с0h на d0h. Всё равно после загрузки пишет PROGRAM? .
По F7 и GD000 стартует коммандер и отображет содержимое СД-карты.

Свтодиоды так и не горят...

fifan
17.02.2018, 13:22
Проверил прошивки: и плисины (EPM7032SLC44) и ПЗУ (W27C512) под новый лоадер (v.6) работают. Светодиоды действительно не горят, хотя до этого с v.5 чётко зажигались и гасли.

Пока на этом спеце работу на некоторое время отложу. Потом вернусь для очередного подхода к контроллеру дисковода - есть некоторые новые наработки в прошивке плисины.

HardWareMan
17.02.2018, 13:53
Ок, проверю код на предмет зажигания лампочек.

fifan
09.03.2018, 21:25
Ок, проверю код на предмет зажигания лампочек.

Прошло время и ничего...

HardWareMan
10.03.2018, 07:31
Прошло время и ничего...
Я просто оставлю тут ссылку на свой (http://zx-pk.ru/threads/25998-programmator-mikroskhem-programmiruemoj-logiki(cpld).html?p=951590&viewfull=1#post951590) пост от 23 февраля 2018 года.

fifan
10.03.2018, 08:14
Ладно. Я вроде нашёл где должны включаться светодиоды в лоадере. Вводимые строки я закомментировал:

; Инит карты памяти
InitMemCard push hl
push de
push bc
call WaitASecond
ld a, #10 ; Низкая скорость, без карты
or #04 ; вкл. только кр. светодиод
; or #c0 ; вкл. и кр. и зел. светодиодов
ld (SPICtrl), a
...

...
; Теперь, посылаем первую команду
ld a, #10 ; Выберем карту
or #04 ; вкл. зел. светодиода
; or #0c ; вкл. и зел. и кр. светодиодов
or #01 ; выбор карты
ld (SPICtrl), a
...

InitMemDone call WaitASecond ; Подождем
ld a, b ; Результат назад
and #7f ; Выделим
cp #00 ; OK?
jp nz, InitMemNext ; Нет - повторим
ld a, #12 ; вкл. только высокой скорости
; ld a, #16 ; вкл. высокой скорости, кр. светодиода
ld (SPICtrl), a
xor a
jp InitMemExit

DiskReadSector push hl
push de
push bc
ld a, #10 ; Высокая скорость
or #04 ; вкл. зел. светодиода
; or #0c ; вкл. и зел. и кр. светодиодов
or #02 ; высокая скорость
or #01 ; выбор карты
ld (SPICtrl), a
...

DiskReadExit push af
ld a, #10 ; Высокая скорость
or #02 ; только высокая скорость
; or #0a ; высокая скорость, вкл. зел. светодиода
ld (SPICtrl), a
...

PVV
11.03.2018, 00:50
Раз уж на СпециалистеМХ2 заработал SD интерфейс, то пора и в МХ режиме получить работу с SD картой! SDOS я с самого начала начал дорабатывать именно для Специалиста.
Во вложении актуальная версия SDOS_V8.4. Поддерживается работа с SDHC картами, запуск как RKX так и RKS файлов, можно перекидывать файлы с SD на RAMдиск МХа и обратно и можно просто читать\писать области памяти c\на SD.
Для запуска RKS файлов нужно в папке с этими файлами положить файл M2_C000.MON. Подробности о SDOS здесь (http://www.nedopc.org/forum/viewtopic.php?f=90&t=17331).

вложение здесь удалил, дальше есть новый файл

fifan
11.03.2018, 09:18
PVV, точно это заработает? Все программы, которые ты давал на пробу на Специалисте МХ2 не работали.

fifan
11.03.2018, 18:35
Завтра попробую изменённый лоадер 6 на предмет загорания светодиодов, а также новую версию SDOS от PVV. На эмуляторе последняя прекрасно работает, а вот как она поведёт себя на реальном МХ2?

fifan
12.03.2018, 15:27
Всё превосходно. SDOS работает. Светодиод у меня светится один - зелёный. Кто повторит мой тест (прошьёт) ПЗУ из атача пусть обратит внимание на то загорается ли красный светодиод, я грешу на свой. Файл spets_mx2_sd.rar - прошивка для Специалиста_МХ2, файл sd_card.rar - файлы для записи на SD карту.

roma
13.03.2018, 20:36
Светодиод загорается только зелёный.

SDOS увидел и отобразил содержимое СД-карты только один раз при самом первом включении.
При этом при работе с СД-картой зелёный светодиод горел всё время.

При всех последующих запусках SDOS, SDOS карту не видел и писал NO FILE(S).
При этом при запуске SDOS всегда загорается и остатся гореть зелёный светодиод.

Да в первый раз я загрузил и запустил из под SDOS одну игру.
После этого SDOS перестал работать ...
Возможно SDOS записал на диск к.л. INI-файл или изменил на СД-карте к.л. другой файл?

По директиве U карта видется все разы и светодиод мигает только при загрузке , а затем после загрузки тухнет.
Файловый менеджер по U а затем GD000 запускается все разы и видет СД-карту всегда ...

Да, автоматический запуск файлового менеждера только по директиве U (без набора GD000) также так и не заработал.

PVV
13.03.2018, 21:34
SDOS увидел и отобразил содержимое СД-карты только один раз при самом первом включении.
При этом при работе с СД-картой зелёный светодиод горел всё время.

При всех последующих запусках SDOS, SDOS карту не видел и писал NO FILE(S).
При этом при запуске SDOS всегда загорается и остатся гореть зелёный светодиод.

Да в первый раз я загрузил и запустил из под SDOS одну игру.
После этого SDOS перестал работать ...
Возможно SDOS записал на диск к.л. INI-файл или изменил на СД-карте к.л. другой файл?

SDOS со светодиодами специально не работает, я это не смотрел.
Ни каких записей и ini файлов SDOS не делает.
1. Проверка с другой картой, отформатировать текущую карту заново, перезаписать файлы попытки предпринимались? (то, что работает Loader и браузер ничего не значит, SDOS использует совершенно другой код)
2. Что пишет SDOS при запуске полностью?
3. Какой файл ПЗУ использовался, что выкладывал я или последний от fifan_а?
Чтобы понять, что происходит нужна обратная связь и развернутый ответ.

roma
13.03.2018, 22:37
Использую последнюю прошивку от fifan.

После большой паузы, после повторного включения СД-карта начала снова видется из под SDOS.
Удалось просмотреть каталог СД карты раза 3 и запустить 3 игры.
После этого СД-карта снова перестала видется.

Когда всё работало выводило сначала
DV8.4 затем FAT16, затем по DIR можно было посмотреть каталог.

Когда карта перестаёт видется, пишет DV8.4 затем D_V2+ либо D_V2, затем по DIR пишет NO FILE(S)
либо просто DV8.4, затем по DIR пишет NO FILE(S).

По директиве U загрузчик работает всегда и карта видется всегда.

Вдобавок у меня в режиме Монитора и режиме SDOS не отображается первый символ в каждой строке.
Возможно он находится в невидимой области экрана.
В режиме МХ в RAMFOS вроде отображаются все символы.
Что можно сделать чтобы сместить строку на один символ?

fifan
14.03.2018, 15:16
У меня такой глюк, описанный roma с зависанием SDOS, тоже был. Так же шапка программы не пишется полностью и потом на DIR выводится NO FILES. Сбросил комп всё заработало.

На счёт первого символа невидимого на экране. А может вообще всё изображение срезается слева на один символ? У меня такое было. В загруженном браузере от меня это видно. Просто VGA монитор так отрезает. Я сделал автоподстройку монитора и весь экран показался.

Красный светодиод - снова прошустрю код. Да поддержка светодиодов сделана только в лоадере и браузере.

PVV
14.03.2018, 16:23
Ситуация похожа на нестыковки времянки в работе SD интерфейса и SDOS вот и идет работа на грани. SDOS не использует анализ бита завершения передачи BUSY. На какой скорости сейчас работает SD интерфейс, пониженная и полная?
Чуть позже выложу сборку SDOS с анализом бита завершения, нужно только узнать в какой позиции этот бит? Так как были отличия (посмотрел сейчас - так и осталось разночтения (http://www.spetsialist-mx.ru/index32.html), fifan, ну исправь же это наконец!) в описании его размещения на сайте fifan_а и реальной реализацией в плис, и на чем в конце концов сошлись я не в курсе.

Еще, на какой скорости работает ВМ80 2 или 2.5Мгц?

roma
14.03.2018, 18:29
У меня установлена ПЛИС EPM7032SLC44 с прошивкой http://zx-pk.ru/threads/27418-rabota-s-sd-kontrollerom-na-spetsialiste_mkh2.html?p=950247&viewfull=1#post950247

PVV
14.03.2018, 22:25
Продолжу гадание на кофейной гуще, авось попаду...Для кого вопросы задаю?
Вот вариант SDOS с ожиданием флага BUSY в старшем бите (0х80): 64623
Напомню, что в SDOS по команде I можно запустить повторную инициализацию карты.

roma
15.03.2018, 00:53
Продолжу гадание на кофейной гуще, авось попаду...Для кого вопросы задаю?
Вот вариант SDOS с ожиданием флага BUSY в старшем бите (0х80): 64623
Напомню, что в SDOS по команде I можно запустить повторную инициализацию карты.

Нет, лучше не стало. Директива I тоже не помогает. Хотя по директиве U bois.bin загружается.
Пробовал и с другой СД-картой.

- - - Добавлено - - -

Хотя у меня сам компьютер работает не очень стабильно...
Стартует не с первого раза, обычно раза с 3-4.
Вios.bin и файловый менеждер по директиве U без ошибки загружаются 8 из 10 раз.
А вот программы с СД-карты из файлового менеджера без ошибки загружаются очень редко ...

- - - Добавлено - - -

ТЕСТ-МХ и тест памяти из РОМ-диска загружаются всегда без ошибок и могут тестрировать пямять часами без всяких ошибок ...
Но у меня всё равно ощущение что что то с компьютером не в порядке ...

fifan
15.03.2018, 06:35
Продолжу гадание на кофейной гуще, авось попаду...Для кого вопросы задаю?
Вот вариант SDOS с ожиданием флага BUSY в старшем бите (0х80): 64623
Напомню, что в SDOS по команде I можно запустить повторную инициализацию карты.

Я записывал в прошивку именно SDOS, который ты последний раз выкладывал. Какой он версии? А что она где-то указывается?

roma, сначала нужно добиться нормальной работы самого компьютера. У меня почти всегда загружается SDOS, был может быть один всего лишь сбой. На счёт загрузки лоадера по директиве U вопросы не к PVV. Он (лоадер) у меня загружается всегда.

PVV
15.03.2018, 08:22
Я записывал в прошивку именно SDOS, который ты последний раз выкладывал. Какой он версии? А что она где-то указывается?
При старте выводится надпись SDV8.4 это и есть версия SDOS v8.4.
Для версии с проверкой флага занятости выводится SDV8.4A - я не уверен в правильности позиции бита этого флага...


roma, сначала нужно добиться нормальной работы самого компьютера.
на 100% поддерживаю, а то может мы ищем проблему, которой нет...

При проверке в b2m браузер грузит далеко не все файлы, и более того, я делал SDOS.RKS и пытался его загрузить, и не смог, начал разбираться, и выяснил, что браузер из 2.6КБ SDOSа загружает только 2КБ. Тогда я сделал усеченную версию SDOS.RKS меньше 2КБ, загрузил ее, а уже из нее загрузил полную версию, так все заработало. Так что браузер еще очень сырой, его надо дорабатывать.
Повторю:

Еще, на какой скорости работает ВМ80 2 или 2.5Мгц?
это не праздный вопрос, я когда экспериментировал со схемой МХ2 на макетке нормальной работы в режиме 2Мгц добиться не смог, только 2.5.
Далее новый вопрос - как выполнено согласование из 5В в 3.3В для SD карты, на резисторах? У меня с таким резисторным преобразованием были проблемы, тоже неустойчиво определялась и работала карта, и я подбирал соотношение резисторов, fifan мне даже вопрос задавал, почему не одинаковые номиналы стоят в этих цепях на схеме http://zx-pk.ru/attachment.php?attachmentid=64558&d=1520701260.

roma
15.03.2018, 10:36
Так я давно писал что компьютер у меня стартует с 3-4 раза и просто сброс не помогает. Приходится включать выключать по 3-4 раза.
И это только с ВМ80. С Z80 стартует всегда с первого раза. Осциллограммы фронтов и спадов на ШД и ША тоже кривые.
Видимо к.л. регистры открываются или закрываются с запозданием, т.е. в компьютере различные части не синхронизированы и компьютер очень критичен к установленным МС.
Поэтому вопрос к авторам: где смотреть и что может быть причина? Какие части и блоки не синхронизированы?

И по своему опыту я заметил что со всем новоделом (за исключением редких моделей) всегда приходится "шаманить" чтобы компьютер стабильно заработал. На этой плате МХ2 итак куча шин питания у меня продублированы проводниками, придётся видимо "шаманить" дальше ...

Хотя все тесты памяти (3 штуки) работают часами без единой ошибки !
И bios.bin с файловым менеджером по директиве U загружается 8-9 из 10 раз без ошибок !
А вот SDOS без ошибки загружается только после первого включения ...

У меня подключен внешний СД-кардреадер со своим стабилизатором и резисторами.

fifan
15.03.2018, 10:59
Касательно Специалиста МХ2. Плату его я разводил по готовой схеме. Большинство ошибок на плате были не по моей вене. Шину питания не очень удачно развёл - сам потом проводники кидал в разные части платы. Но у меня работает более-менее стабильно. У меня есть узкое место - панелька под ПЗУ - износились её контакты - много микросхем снимались/ставились в неё. Адаптер PS/2 клавиатуры вставляется в панельку ВВ55 - иногда неконтакт из-за перекоса адаптера.

По SDOS. Сейчас хоть работает практически всегда, ранее не одна версия не работала. Автор не анализирует вставку карты, не управляет светодиодами, но это не важно.

HardWareMan
15.03.2018, 13:35
Продолжу гадание на кофейной гуще, авось попаду...Для кого вопросы задаю?
Вот вариант SDOS с ожиданием флага BUSY в старшем бите (0х80): 64623
И гадать не надо. Он же указал на прошивку, а там:

assign Dat[7:0] = (~nCS & ~nRD) ? (Adr) ? {~nINS,BUSY,2'h0,Ctrl[3:0]} : Data[7:0] : 8'hZZ;
Что сразу не соответствует твоим запросам. Алсо:

Так как были отличия (посмотрел сейчас - так и осталось разночтения (http://www.spetsialist-mx.ru/index32.html), fifan, ну исправь же это наконец!) в описании его размещения на сайте fifan_а и реальной реализацией в плис, и на чем в конце концов сошлись я не в курсе.
Я его просил еще месяц назад (http://zx-pk.ru/threads/27418-rabota-s-sd-kontrollerom-na-spetsialiste_mkh2.html?p=949606&viewfull=1#post949606), а воз и ныне там, хотя меня он тыкал палочкой на предмет лампочек. Актуальный проект соответствует этому:

RD WR RES
D7 INS x x
D6 BSY x x
D5 0 x x
D4 0 x x
D3 GRN GRN 0
D2 RED RED 0
D1 SPD SPD 0
D0 SEL SEL 0

INS: 0 - пусто, 1 - вставлена карта
BSY: 0 - готов, 1 - занят сдвигом
GRN: 0 - выключен, 1 - горит зеленый LED
RED: 0 - выключен, 1 - горит красный LED
SPD: 0 - низкая скорость, 1 - высокая скорость
SEL: 0 - карта не выбрана, 1 - карта выбрана
Придерживайтесь в своем коде только этой информации.

PVV
15.03.2018, 15:07
И гадать не надо. Он же указал на прошивку, а там:

assign Dat[7:0] = (~nCS & ~nRD) ? (Adr) ? {~nINS,BUSY,2'h0,Ctrl[3:0]} : Data[7:0] : 8'hZZ;
Что сразу не соответствует твоим запросам.
Ну не понимаю я vhdl или что это за язык, с ПЛИСами я только в схемнов вводе немного работал.



Я его просил еще месяц назад (http://zx-pk.ru/threads/27418-rabota-s-sd-kontrollerom-na-spetsialiste_mkh2.html?p=949606&viewfull=1#post949606), а воз и ныне там...
я тоже на это (http://zx-pk.ru/threads/27418-rabota-s-sd-kontrollerom-na-spetsialiste_mkh2.html?p=901770&viewfull=1#post901770) больше года назад указывал


Актуальный проект соответствует этому:

RD WR RES
D7 INS x x
D6 BSY x x
D5 0 x x
D4 0 x x
D3 GRN GRN 0
D2 RED RED 0
D1 SPD SPD 0
D0 SEL SEL 0

INS: 0 - пусто, 1 - вставлена карта
BSY: 0 - готов, 1 - занят сдвигом
GRN: 0 - выключен, 1 - горит зеленый LED
RED: 0 - выключен, 1 - горит красный LED
SPD: 0 - низкая скорость, 1 - высокая скорость
SEL: 0 - карта не выбрана, 1 - карта выбрана
Придерживайтесь в своем коде только этой информации.
Спасибо, именно это и нужно! Очень бы хотелось, что бы fifan эту информацию у себя на сайте разместил, и прошивку плис в схемном вводе соответствующую этому описанию сделал, а то в куче страниц этой ветки инфа затеряется и опять будут вопросы.

Обновленная версия SDOS с правильным BUSY будет не раньше чем завтра. Однако не думаю, что у roma проблема с этим флагом и обновленная версия поможет, здесь явные аппаратные проблемы, которые программным способом не решить, но попробовать надо.
Я тут попробовал Loader_ом загрузить свой монитор, заменив BIOS.BIN, и ничего не получилось, похоже, что Loader_v6 не включает std режим или еще что то. Задумка же была грузить любые мониторы?

HardWareMan
15.03.2018, 15:56
я тоже на это (http://zx-pk.ru/threads/27418-rabota-s-sd-kontrollerom-na-spetsialiste_mkh2.html?p=901770&viewfull=1#post901770) больше года назад указывал
Т.е., ты хотел сказать, что это я ему указывал (http://zx-pk.ru/threads/27418-rabota-s-sd-kontrollerom-na-spetsialiste_mkh2.html?p=901764&viewfull=1#post901764) на ошибки год назад?


Спасибо, именно это и нужно! Очень бы хотелось, что бы fifan эту информацию у себя на сайте разместил, и прошивку плис в схемном вводе соответствующую этому описанию сделал, а то в куче страниц этой ветки инфа затеряется и опять будут вопросы.
Схемного ввода нет и не будет. Но можно вывесить RTL, Q13+ умеет его делать красиво.


Я тут попробовал Loader_ом загрузить свой монитор, заменив BIOS.BIN, и ничего не получилось, похоже, что Loader_v6 не включает std режим или еще что то. Задумка же была грузить любые мониторы?

Он грузит по адресу C000H код размером вплоть до EFFFH (до 12КБ, дальше идут порты), потом кидает этот код в ОЗУ и прыгает на него:

BDF8 AF XRA A
BDF9 32 11 F0 STA 0F011H
BDFC C3 00 00 JMP 0C000H
BDFF
Код отключает ПЗУ (бит D3 порта управления контроллером SD карты!) и запускает загруженный код. Код должен быть скомпилированным для работы с адреса C000H.

fifan
15.03.2018, 15:56
Я прошивал плисину согласно приведённому вами двумя описанию. Лоадер ведь работает. На сайте я перепроверю, вроде тоже менял.

Лоадер грузит любые мониторы, вернее файл bios.bin. Я сколько этих файлов менял, всё работало. Мы же придерживаемся к железке (прошитая плис, сама схема) считывателя SD карты от HardWareMan'а. Почему лоадер у меня работает, я больше скажу мой браузер, который использует те же подпрограммы от лоадера тоже работает? Может дело в SDOS?

roma
15.03.2018, 16:13
HardWareMan, а что по сбросу и стабильности моего компьютера можешь посоветовать, что смотреть, где копать?
Почему с Z80 стартует всегда с первого раза, а с ВМ80 с 3-4 раза, причём кнопка сброс не помогает, нужно включать-выключать компьютер ...

Раз тест памяти всегда работает железно - то проблема с портами или включением-отключением ПЗУ ?

PVV
16.03.2018, 15:51
Версия SDOS_V8.4B с исправленным обработчиком флага BUSY.

HardWareMan
17.03.2018, 06:23
На сайте я перепроверю, вроде тоже менял.

http://jpegshare.net/images/bc/dd/bcddf82721ac7cb22718d0a7489a9791.png

roma
17.03.2018, 10:45
Версия SDOS_V8.4B с исправленным обработчиком флага BUSY.
64638

Вроде немного получше стало работать. Но у меня также через некоторое время после включения перестаёт видеть карту.

Да, у меня достаточно прилично греются две К1533АП6 (Д40 и Д43), нагреваются градусов до 50-55.
И как раз на их выводах сигналы ШД сильно искажены.
Хотя по схеме они одновременно не должны открываться так как стробируются сигналами RD и WR.
Хотя сигнал RD проходит через дополнительный инвертор на К155ЛА8. Возможно он даёт значительную задержку,
так что некоторое время открыты обе АП6 ?
Хотя к этой ШД подключены ещё ОЗУ и ПЗУ. Возможно и они засоряют ШД ?

- - - Добавлено - - -

Да, а сигналы RAM и ROM для ОЗУ и ПЗУ формируются и проходят через кучу элементов, и при их формировании задержка более значительная ...
Так что вопрос авторами схемы, где наиболее критичен тайминг? Что смотреть ?

- - - Добавлено - - -

Если у кого МС стоят на панельнках не могли бы поиграться с типами МС, чтобы определить какие узлы наиболее критичны к таймингу ?
Вот моя плата: https://c.radikal.ru/c33/1803/05/7e6253378a30.jpg (https://radikal.ru)

fifan
17.03.2018, 15:13
Применена 531 серия? Это что? У меня такой и не было никогда. Вся логика у меня 555 и 1533 серии и их зарубежные аналоги. АП6 у меня греются, не сильно.

roma
17.03.2018, 19:39
Что было в наличи, то и поставил. На Ленинград1 хоть что ставь - в любой комбинации всегда будет железобетонно работать.
В других компьютерах у меня тоже практически всегда "салат" стоит, и ничего - всё работает.

Так что тут налицо ошибка в схемотехнике, где то что то не засинхронизировано, либо очень критично к таймингу и установленным МС.
Поэтому у меня и стартует с 3-4 раза, и с СД-картой работает очень нестабильно, хотя любой их 3х тестов памяти работает часами ...

PVV
17.03.2018, 21:08
Собрал прошивку так, что бы к SDOS был доступ из МОНИТОР-4, вызывать просто по кнопке Y

fifan
17.03.2018, 21:41
Подожди, подожди - дай под МХ попробовать.

PVV
17.03.2018, 23:22
Подожди, подожди - дай под МХ попробовать.
Это к чему?


Лоадер грузит любые мониторы, вернее файл bios.bin. Я сколько этих файлов менял, всё работало.
Сейчас еще раз проверил и МОНИТОР-1 и МОНИТОР-2 с сайта (http://www.spetsialist-mx.ru/index6.html) Loader v6 их не загружает. Раньше, в Loader_v5 все грузилось.

fifan
18.03.2018, 08:14
Хочу сначала проверить запуск файла SDDOS из под RAMFOSа.

Как понять не загружает? bios.bin - образ памяти Специалиста в режиме Std, размером до 12 кБайт. После загрузки лоадер передаёт управление по адресу C000, происходит запуск монитора. Может просто не происходит запуск монитора?

PVV
18.03.2018, 18:59
Как понять не загружает? bios.bin - образ памяти Специалиста в режиме Std, размером до 12 кБайт. После загрузки лоадер передаёт управление по адресу C000, происходит запуск монитора. Может просто не происходит запуск монитора?
МОНИТОР запускается, появляется его приглашение, но при попытке перейти по F1->Enter к курсору и вводу команд он виснет или вообще появляется приглашение МОНИТОР-4...

Доработал SDOS для std режима МОНИТОР-4. Теперь SDOS может загружать файлы монитора, на подобии, как это делает Loader, но размер файла монитора не должен превышать 8КБ. Оставшиеся 4КБ это код самой SDOS, такой подход дает возможность из любого монитора выполнить GE000 и попасть в SDOS_v8.5.
Из МОНИТОР-4 запуск SDOS по Y.
Монитор запускать вводом полностью его имени и расширения (например, M2.MON ).
Во вложении еще и файлы мониторов, которые я пробовал.

HardWareMan
19.03.2018, 09:54
Применена 531 серия? Это что?
Это как 555 только быстрее (и жрет больше). Соответствует 74F, вроде.

Serg6845
02.01.2019, 14:14
МОНИТОР запускается, появляется его приглашение, но при попытке перейти по F1->Enter к курсору и вводу команд он виснет или вообще появляется приглашение МОНИТОР-4...

Доработал SDOS для std режима МОНИТОР-4. Теперь SDOS может загружать файлы монитора, на подобии, как это делает Loader, но размер файла монитора не должен превышать 8КБ. Оставшиеся 4КБ это код самой SDOS, такой подход дает возможность из любого монитора выполнить GE000 и попасть в SDOS_v8.5.
Из МОНИТОР-4 запуск SDOS по Y.
Монитор запускать вводом полностью его имени и расширения (например, M2.MON ).
Во вложении еще и файлы мониторов, которые я пробовал.

Кстати в образе нашел багу. по кнопке Y код грузится в область 0xE000, а управление передается на 0xD300. со всеми вытекающими. быстрое лечение - поменять в .bin файле байт по адресу 11AE с D3 на E0.

fifan
02.01.2019, 14:52
Кстати в образе нашел багу
Наверное никто кроме самого автора PVV и не пробовал этот загрузчик вот и не нашли баг. Я не помню пробовал его или нет. Вот МХ2 на плисине спаяю заново нужно будет всё ПО подбирать.

Serg6845
02.01.2019, 15:25
Вот МХ2 на плисине спаяю заново нужно будет всё ПО подбирать.

Да, там есть что дорабатывать. Кстати - в образах для MX2 ни один тест памяти в части тестирования рамдиска корректно не работает. то есть не пытется определить реальный объем рамдиска. вынимаем микросхему на 512к, ставим на 128 - все равно успешно тестируются все 512к.

fifan
02.01.2019, 16:10
ни один тест памяти в части тестирования рамдиска корректно не работает. то есть не пытется определить реальный объем рамдиска
Да точно в моей программе RAM test.COM 512 и 256 кБайт одинаковы (512). Проверю исходники, исправлю. Спасибо за подсказку.

PVV
02.01.2019, 20:29
Кстати в образе нашел багу. по кнопке Y код грузится в область 0xE000, а управление передается на 0xD300. со всеми вытекающими. быстрое лечение - поменять в .bin файле байт по адресу 11AE с D3 на E0.
Посмотрел, действительно так. Я уже не помню, как собирал эту прошивку, возможно просто правил в HEX по аналогии с существующим кодом, и допустил такой ляп. Лечение абсолютно верное. В эмуляторе память от D300 до E000 заполнена NOP_пами и все работает корректно, но это совершенно не факт для реального ПК.
to Serg6845: бага найдена в эмуляторе или на реальном ПК?

Serg6845
02.01.2019, 20:51
Посмотрел, действительно так. Я уже не помню, как собирал эту прошивку, возможно просто правил в HEX по аналогии с существующим кодом, и допустил такой ляп. Лечение абсолютно верное. В эмуляторе память от D300 до E000 заполнена NOP_пами и все работает корректно, но это совершенно не факт для реального ПК.
to Serg6845: бага найдена в эмуляторе или на реальном ПК?

На реальном. более того - у меня память на батарейке (M48Z128Y). помнит все что было. так что там может быть что угодно.
кстати тут чудеса происходят - SDOS 8.9N (и предыдущие версии тоже) - в режиме стандарт все работает, а в режиме МХ2 - есть две флешки (одна SDHC 4G, вторая - просто SD 2G) - DIR отрабатывает как надо, а при попытке загрузить файл - пауза (примерно как при штатной загрузке), затем - NO FILE(s). только на этих двух флешках.
да, еще команда L на МХ2 работает криво - в рамдиск что-то пишется, и размер вроде похож, но вместо имени файла - мусор.

fifan
02.01.2019, 22:11
SDHC карта работать не будет. Нужно выбирать карты до 2 ГБайт включительно.

Serg6845
02.01.2019, 22:24
SDHC карта работать не будет. Нужно выбирать карты до 2 ГБайт включительно.

в сборке для режима стандарт она спокойно работает. на том же железе. про раздел до 2Г на ФАТ16 я в курсе, соблюдено. да и вторая флешка - не HC и 2Г.

PVV
02.01.2019, 23:00
...кстати тут чудеса происходят - SDOS 8.9N (и предыдущие версии тоже) - в режиме стандарт все работает, а в режиме МХ2 - есть две флешки (одна SDHC 4G, вторая - просто SD 2G) - DIR отрабатывает как надо, а при попытке загрузить файл - пауза (примерно как при штатной загрузке), затем - NO FILE(s). только на этих двух флешках.
интересно и не понятно. Нужна дополнительная информация. В std эти две флешки работают, а в МХ2 глюк - так? Загрузка одних и тех же файлов так себя ведет или разных? (имеется ввиду, к примеру, TEST.RKS грузим в std и этот же TEST.RKS грузим в МХ2, а не RKX файл какой нибудь). Соображения - может дело в какой нибудь фрагментации файлов на флешке, приводящей к такому глюку. Или если в МХ2 грузим именно RKS, то есть ли рядом с этим файлом файл монитора M2_C000.MON , в том же каталоге имеется ввиду? Просто чтение, без запуска по R filename,хх,хх работает?


да, еще команда L на МХ2 работает криво - в рамдиск что-то пишется, и размер вроде похож, но вместо имени файла - мусор.
Вероятнее всего, тут все правильно, в МХ нюанс есть...файл должен быть в RKX формате, а не RKS... для МХ(2) в SDOS свой формат файлов придуман был. С RKS форматом сложности есть, они двух типов встречаются, в одном нет имени файла, а во втором есть имя файла, плюс еще служебные байты в заголовке есть. что использовать не понятно. В RKX формате начало заголовка, с размером, идет как в RKS (по тому и размер правильный в РАМдиске появляется), а дальше имя файла (в RKS здесь уже данные - вот и мусор в имени), маркер завершения заголовка 0хЕ6, и только затем сами данные.

SDHC флешки в SDOS поддерживаются начиная с версии 8.0.

- - - Добавлено - - -


в сборке для режима стандарт она спокойно работает. на том же железе. про раздел до 2Г на ФАТ16 я в курсе, соблюдено. да и вторая флешка - не HC и 2Г.
уточню, ФАТ16 может быть до 4ГБ. Проверено, работает. На карте 16ГБ создавался раздел на 3.9ГБ, в ФАТ16 форматировался, файлы запускались.

- - - Добавлено - - -

вот эта ситуация

... DIR отрабатывает как надо, а при попытке загрузить файл - пауза (примерно как при штатной загрузке), затем - NO FILE(s)...
очень похожа на попытку запуска RKS файла в МХ режиме, но без файла монитора - поведение именно такое и будет!
Во вложении файл монитора, его надо записать в тот же каталог, где находится запускаемый RKS файл.

Serg6845
02.01.2019, 23:23
вот эта ситуация

очень похожа на попытку запуска RKS файла в МХ режиме, но без файла монитора - поведение именно такое и будет!
Во вложении файл монитора, его надо записать в тот же каталог, где находится запускаемый RKS файл.

точно, оно. но это ж в голову не придет даже после бутылки :)

PVV
02.01.2019, 23:34
:v2_biggr: МХ изначально не умел RKS запускать, но vinxru добавил в РАМФОС такую возможность в своей сборке, а я, подсмотрев у него, сделал аналогично в SDOS.

fifan
03.01.2019, 10:23
Я вообще против запуска МХ программ в Std режиме и наоборот. Мы имеем дело с реальным компьютером и зачем нам нужно переносить заморочки придуманные в эмуляторе на реальный компьютер? Я про так называемые подгружаемые мониторы. Вы работаете на МХ2 и зачем переходить в МХ режим чтобы загрузить Std игру? Std и МХ режимы не совместимы. HardWareMan придумал МХ2 не для того чтобы объединить два режима в одном компьютере, а для того чтобы переходить из одного режима в другой программно.

Это моё мнение, и его я не навязываю никому.

Serg6845
03.01.2019, 11:13
Я вообще против запуска МХ программ в Std режиме и наоборот. Мы имеем дело с реальным компьютером и зачем нам нужно переносить заморочки придуманные в эмуляторе на реальный компьютер? Я про так называемые подгружаемые мониторы. Вы работаете на МХ2 и зачем переходить в МХ режим чтобы загрузить Std игру? Std и МХ режимы не совместимы. HardWareMan придумал МХ2 не для того чтобы объединить два режима в одном компьютере, а для того чтобы переходить из одного режима в другой программно.

Это моё мнение, и его я не навязываю никому.

А кстати - игрушка Lines - она Std или MX? а то при запуске из-под МХ с подгружаемым монитором работает нормально, а из Std - глючит (линии не пропадают).

fifan
03.01.2019, 11:28
А кстати - игрушка Lines - она Std или MX?
Вот и проявились касяки, а игрушка-то Std - а у Вас она не правильно работает. Не пропадают линии - значит Монитор не патченный, не поддерживает 8 цветов. Я именно про этот глюк этой игры где-то писал на этом форуме.

Serg6845
03.01.2019, 11:40
Вот и проявились касяки, а игрушка-то Std - а у Вас она не правильно работает. Не пропадают линии - значит Монитор не патченный, не поддерживает 8 цветов. Я именно про этот глюк этой игры где-то писал на этом форуме.
так она именно в Std не работает, с Монитором-4. а с подгружаемым - нормально. насчет патча - поищу.

fifan
03.01.2019, 11:48
А нет, это касяк переключения цветов в игре именно проявляется в МХ2. С первого прохода не нашёл где это описывал, помню, что нужно было изменить Flash диск Специалиста МХ2 - там есть программка, которая переключает цвета 5/8.

Serg6845
03.01.2019, 21:08
Посмотрел, действительно так. Я уже не помню, как собирал эту прошивку, возможно просто правил в HEX по аналогии с существующим кодом, и допустил такой ляп. Лечение абсолютно верное. В эмуляторе память от D300 до E000 заполнена NOP_пами и все работает корректно, но это совершенно не факт для реального ПК.
to Serg6845: бага найдена в эмуляторе или на реальном ПК?

и еще одна бага - SDOS 8.5 после выхода по X включает в нижних 32к ПЗУ. хотя загрузка по R грузит в ОЗУ корректно, но после выхода приходится ПЗУ отключать или ресет делать,

PVV
03.01.2019, 22:02
Вот и проявились касяки, а игрушка-то Std - а у Вас она не правильно работает. Не пропадают линии - значит Монитор не патченный, не поддерживает 8 цветов. Я именно про этот глюк этой игры где-то писал на этом форуме.
fifan, зачем в очередной раз вводить людей в заблуждение с неким монитором, поддерживающем или не поддерживающем цвет?! Нет такого монитора и нет патча добавляющего некий цвет в монитор. Я вот (https://zx-pk.ru/threads/28706-spetsialist-quot-vostochnyj-ekspress-quot-sborka-i-naladka.html?p=989632&viewfull=1#post989632) в соседней ветке только об этом говорил

Что есть 'так называемый цветной' монитор? Это классический монитор с правкой кода инициализации НП под INTE и все...
В мониторе просто переносится управление ножкой с порта ВВ55 на INTE от ВМ80, которая обеспечивает работу схемы начального пуска (НП) для самого первого варианта Специалиста Std, где после запуска монитора состояние этой ножки не меняется в процессе работы. В последующих версиях Специалиста, где в НП используется схема RS триггера на двух элементах ЛА3, эта правка вовсе не нужна и не актуальна. О поддержке цвета тут можно только косвенно говорить, тк в результате переназначения ножки с ВВ55 на INTE освободившаяся ножка на ВВ55 используется для одного из базовых цветов (опять же, только для самого первого варианта Специалиста Std !). Если НП реализован на RS триггере, то состояние этой ножки в процессе работы может меняться как угодно, триггер НП уже отработал.
Если же мы говорим о мониторах применительно в МХ2, то это вообще не о чем, в МХ2 нет схемы НП, там ПЗУ с начальных загрузчиком находится сразу с 0х0000. Монитор патченный под другую схему НП или нет, тем более, к цвету вообще не имеет отношения.
Тут о другом надо говорить. Если для МХ2 у нас МОНИТОР-4, то вот в этот монитор и надо встроить дополнительные директивы, к примеру '5' и '8', включающие режим 5 и 8 цветов, это было бы гораздо правильнее, а не иметь в РОМдиске МХ2 некую программу, эти режимы переключающие. Как вообще то после перейти из режима МХ2 в Std, это же не предусмотрено?!
Если посмотреть карту (http://www.spetsialist-mx.ru/index21.html) битов, кто за что отвечает, то переключение режима цвета 5/8 идет битом D1 по адресу 0xF018, значит можно из монитора сделать запись директивой 'M': MF018, и прописать там '01' для 5и цветов и '03' для 8и цветов. Младший же бит D0 отвечает за включение ПЗУ в нижней половине адресов, и его выключенное состояние это 1, это надо не забывать.

- - - Добавлено - - -


и еще одна бага - SDOS 8.5 после выхода по X включает в нижних 32к ПЗУ. хотя загрузка по R грузит в ОЗУ корректно, но после выхода приходится ПЗУ отключать или ресет делать,
Интересно, но выход из SDOS идет как переход на адрес С000, и там заведует всем МОНИТОР-4. Возможно надо на другой адрес переход делать. Это надо изучать.

- - - Добавлено - - -

Посмотрел, если поменять в .bin файле байт по адресу 0х7622 с 00 на 03, то ПЗУ включаться не будет.

fifan
04.01.2019, 07:24
Если для МХ2 у нас МОНИТОР-4, то вот в этот монитор и надо встроить дополнительные директивы, к примеру '5' и '8', включающие режим 5 и 8 цветов, это было бы гораздо правильнее, а не иметь в РОМдиске МХ2 некую программу, эти режимы переключающие.
Уже давно придумано. В файле Flash -диска есть программа включающая режим 8 цветов (5 цветов устанавливается при включении компьютера). В этой программе стоят коды:

3e 03 32 fa f7

Serg6845
04.01.2019, 11:21
Уже давно придумано. В файле Flash -диска есть программа включающая режим 8 цветов (5 цветов устанавливается при включении компьютера). В этой программе стоят коды:

Все, разобрался. и это не глюк игрушки, это глюк отображения. то есть видны не всегда те цвета что на самом деле. и есть патченая программа под именем collines. а паять флеш-диск при наличии SD карты мне как-то лениво...