User Tag List

Страница 14 из 35 ПерваяПервая ... 101112131415161718 ... ПоследняяПоследняя
Показано с 131 по 140 из 354

Тема: Корвет: ExtROM Open Source extender

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    Подскажи пожалуйста, ты выложил исправленую прошивку
    Да вроде да, исправленную. Правда, с тех пор я ее еще доделал. Оптимизировал операции ввода-вывода блоков, как мы делали со стороны корвета, и добавил индикацию ошибок вымаргиванием светодиода.
    Прикладываю в аттаче последнюю на данный момент версию.

    В архиве у mount.kdi - неправильное crc инф. сектора
    Cооветсвенно он не открывается ни xkorvet ни эмулятором.
    скопировал из стандартного - заработал.
    Да, блин, точно. Ошибка сидит в моей доработанной версии эмулятора - диск создавался по mount /c, а эмулятор по ошибке не дописывал последний байт инфосектора формируемого диска.
    В процедуре emu_creatikdi, в массиве infosector[], надо дописать в конце еще один байт 0x10. Это полный дамп всех значимых полей инфосектора, а последний байт я где-то потерял. А не заметил я этого потому, что диск все время был A:, а там работает режим подстановки системных дорожек - этот инфосектор никогда никем не читался
    В прошивке контроллера такой ошибки нет, хотя подпрограммы в контроллере и эмуляторе почти одинаковые.

    В mount надо бы проверку вставить на наличие интерфейса.
    About вывести в самом начале ?
    И проверять что PPI2С.7=IRQ0=1 - упасьб если это не так.
    Насчет about - я придерживался минимализма, свойственного всем утилитам CP/M. Всякие там PIP, STAT, SUBMIT и прочие тоже не имеют ни ABOUT, ни хелпа. Хотя хелп (/H), может быть, и надо бы добавить. Но я старался, чтобы COM файл получился как можно меньше.

    А насчет проверки наличия интерфейса и активности сигнала Control - ты абсолютно прав. Надо доделать, иначе программа будет виснуть намертво при запуске без интерфейса.
    Вложения Вложения

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    выбор был между 3.0 при 4.6
    и 3.5 при 12
    решили выбрать 3.5
    А чем вы там напряжение-то формируете? Если LM317, так там можно плавно отрегулировать напряжение, изменяя задающее сопротивление.
    Но, в любом случае, дел явно не в напряжении. За неимением осциллографа, попробуй хотя бы логическим анализатором посмотреть. Только анализатор не покажет реальной амплитуды сигнала...

  4. #3

    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    кстати, по поводу моих хождения по граблям

    1. не надо отключать при ошибке обработчик BOOT
    2. STAGE0 тоже должено общаться через апи
    чтобы он мог узнать что карта не проинитилась и написать про это
    3. добавить в апи getstatus (со строкой ответа)
    тогда stage0 сможет вменяемо сказать Can't init SD CARD

    3. добавить в апи работу с ROM образами
    4. запихнуть в PROM например KTDP (ужатый) , чтобы при отсутсвии карты можно было хоть его загрузить.
    он до 9500 ужимается.
    (или мелкую игрушку, например SAUCER) ужатый 2.3к
    для теста и чтоб жило хоть как-то

    ---------- Post added at 12:52 ---------- Previous post was at 12:50 ----------

    Цитата Сообщение от forth32 Посмотреть сообщение
    А чем вы там напряжение-то формируете? Если LM317, так там можно плавно отрегулировать напряжение, изменяя задающее сопротивление.
    Но, в любом случае, дел явно не в напряжении. За неимением осциллографа, попробуй хотя бы логическим анализатором посмотреть. Только анализатор не покажет реальной амплитуды сигнала...
    как ты на схеме нарисовал
    как заведётся - поеду переделаем на 5 в. чтобы было одинаково.

  5. #4

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    кстати, по поводу моих хождения по граблям

    1. не надо отключать при ошибке обработчик BOOT
    А зачем он нужен-то при ошибке? Его неотключение приводит к тому, что при самопроизвольно дергании сигнала Control контроллер начинает перезапускаться, что может привести к потере информации на SD-карте. Я на это дело уже нарывался.

    2. STAGE0 тоже должено общаться через апи
    чтобы он мог узнать что карта не проинитилась и написать про это
    3. добавить в апи getstatus (со строкой ответа)
    тогда stage0 сможет вменяемо сказать Can't init SD CARD
    Это ты, конечно, здорово придумал, только вот не учел, что вся эта крутизна не влезет в 256 байт, отпущенных на этот загрузчик. Ну и потом - чем тройное мигание светодиода хуже надписи на экране? Информации и оттуда и оттуда ты получашь совершенно одинаково, только светодиод надежнее - будет мигать даже при полностью неработающем интерфейсе. А для проверки интерфейса надо придумать отдельный тест и свои коды ошибок.

    3. добавить в апи работу с ROM образами
    4. запихнуть в PROM например KTDP (ужатый) , чтобы при отсутсвии карты можно было хоть его загрузить.
    Да, понимаю, что тебе хочется уже сейчас получить от контроллера хоть что-то, отсюда такие идеи. Но сам подумай - это все нужно только на этапе наладки контроллера. Потом, когда он нормально заработает, такая функциональность совершенно не нужна. Да и на данном этапе загрузка КТДП тебе не даст ничего, кроме морального удовлетворения от работы контроллера

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

    А специально для тебя я могу попробовать сделать версию прошивки, в которой вместо средств работы с картой будет жестко прописана загрузка КТДП, зливаемого во флеш меги. Только надо придумать, как его туда поместить в двоичном виде. Если бы все писалось на ассемблере - вопросов бы не было. А вот С сам упраляет распределение данных во флеше, присоединять дополнительный блок двоичных данных к программе на С я никогда не пробовал.

  6. #5

    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от forth32 Посмотреть сообщение
    А специально для тебя я могу попробовать сделать версию прошивки, в которой вместо средств работы с картой будет жестко прописана загрузка КТДП,
    не не не
    это были мысли так сказать вслух, на будующее.
    как этим пользоваться "обычным пользователям".

    пока типа записей в хотелки.

  7. #6

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Я вот уже с твоей подачи стал думать, как прикрутить диагностику интерейса. Битые ВВ55 встречаются не так уж и редко.

  8. #7

    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Фух, отловил баг !!!!
    Два разных биоса работают !
    3 дня и такие спецэффекты !

    21_89___wiza.kdi.bin
    12_87_11_niijaf.kdi.bin

    Первый вроде работал но падал при загрузки >8к

    Решил второй биос прикрутить, думал может где-то ошибся
    Прикрутил а эффект ровно тот-же

    А бага красивая ....

    Я в резидент скопировал все копипастом, EXR_GETBYTE,....
    Изменил метки, но в одном месте в чтении забыл исправить метку ...
    Она ссылалась на код stage2
    И когда его затерало то чудеса и начинались
    Вот откуда мои 8к были, 0x2000
    Пришлось даже в эмулятор прикрутить дамп всей памяти по чтению сектора.
    Только так и отловил.

    Больше ничего не делал, но очень радует что оно заработало !

    Раз два работают, большенство остальных должны пойти легко.

    ---------- Post added at 00:37 ---------- Previous post was at 00:29 ----------

    сразу отпишусь, что это на старой версии эмулятора, твои патчи пока не применял, решил не отвлекаться.
    может что-то из этого уже и пофиксится
    ты вроде что-то там с PPI2C.7 делал.


    решил попробовать разный софт
    и сразу



    Код:
    ABRIS виснет проверяет странную мышку ??
    
    RAM:39FA          MOUSE_Ext?:                             ; CODE XREF: RAM:1A53p
    RAM:39FA 21 1D 3A                 ld      hl, kbdVint?
    RAM:39FD E5                       push    hl
    RAM:39FE 21 08 00                 ld      hl, 8
    RAM:3A01 E5                       push    hl
    RAM:3A02 CD 7D 29                 call    setIntHandler
    RAM:3A05 D1                       pop     de
    RAM:3A06 D1                       pop     de
    RAM:3A07 3E 82                    ld      a, PORT_C30_OUT|PORT_B_IN|MODE_B_0|PORT_C74_OUT|PORT_A_OUT|MODE_A_0|_SET_MODE
    RAM:3A09 32 0B FB                 ld      (_1C_PPI3RUS), a
    RAM:3A0C          ;
    RAM:3A0C 21 0A FB                 ld      hl, _1C_PPI3C
    RAM:3A0F 36 10                    ld      (hl), 10h
    RAM:3A11 36 00                    ld      (hl), 0
    RAM:3A13 3A 09 FB                 ld      a, (_1C_PPI3B)
    RAM:3A16 FE 38                    cp      38h ; '8'
    RAM:3A18 C0                       ret     nz
    RAM:3A19 32 21 3C                 ld      (MouseExtFlag?), a
    RAM:3A1C C9                       ret
    Код:
    AKVA  - остатки защиты ??
    читает из fdd, а в DRVREG неверное значение
    судя по коду там кто-то забил нопы рядом, 
    надо уже допатчить штоль
    
    в памяти
    7004: D0 -> C9
    
    c9 0a 0f d0 0f d2 02 70
    c9 0a 0f c9 0f d2 02 70
    Код:
    poker - виснет на чтении 
    868d: mvi a,0
    
    868f: sta ppi2C_
    Код:
    DANDARE - виснет на чтении
    
    RAM:8D6C 3E 08                    ld      a, 8
    RAM:8D6E 32 32 FB                 ld      (_1C_PPI2C_), a
    
    RAM:8DE2 AF                       xor     a
    RAM:8DE3 32 32 FB                 ld      (_1C_PPI2C_), a


    ---------- Post added at 00:41 ---------- Previous post was at 00:37 ----------

    Цитата Сообщение от forth32 Посмотреть сообщение
    Битые ВВ55 встречаются не так уж и редко.
    та очередную голову отбить бы за DB37M
    школьники баловались - ключами вжик по разъему
    а там всё что нужно и +5 и +12 ....

    ведь в оригинале стоял (тот что рп50 - мама)
    оптимизаторы.
    да и еще он похоже в корпус хуже ствновился
    у меня вот чуть под углом.
    Последний раз редактировалось esl; 17.07.2014 в 01:32.

  9. #8

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я, наконец, закончил доработку проекта по результатам предыдущих обсуждений. Итак, что добавлено.

    Самое главное - полностью сделал управление реакцией контроллера на сигнал Control, что так сильно портило жизнь последнее время. Для этого я в API добавил еще одну команду - A1. Для тех, кто не очень понимает, что такое Control и зачем это нужно, привожу цитату из доки по API:

    A1 — управление сигналом Control

    Сигнал Control, выходящий из бита 7 канала С порта PPI2, используется контроллером Extrom для синхронизации начальной загрузки, а после окончания загрузки используется для определения момента перезагрузки корвета. Дело в том, что несознательные разработчики корвета проявили потрясающее разгильдяйство, не выведя на боковой разъем такой важный сигнал, как Reset. В результате приходится определять перезагрузку корвета по уходу этого сигнала в 0 (что происходит при аппаратном сбросе ВВ55). Но проблема уперлась в то, что некоторые умники, пишущие программы для корвета, считают своим долгом дергать этот сигнал как угодно, даже без определенной цели. В результате контроллер уходит в перезагрузку, а программа, работающая на корвете, теряет доступ к диску. Чтобы избежать этой ситуации, и используется данная команда. В поле TRK указывается 0 — запретить перезагрузку от Control, или 1 — разрешить ее. В режиме запрещения перезагрузки, если нажать кнопку Reset корвета, получим на экране сообщение Ошибка шины. В этом случае надо или отключить и снова включить питание, или нажать кнопку сброса на самом контроллере.


    Еще одна проблема того же типа - перенастройка режима ВВ55 некоторыми программами - решается на уровне биоса, записывающего правильное кправляющее слово в ВВ55 при каждом обращении к диску. Правда, при этом может, например, перестать работать цифровой джойстик на канале В. Ну, эту проблему мы как-нибудь решим, когда возникнет.

    Далее, я доработал утилиту mount, как тут обсуждалось.

    1. Ввел проверку наличия интерфейса Extrom. Теперь, если запустить программу с обычной дискеты, без подключенного интерфейса, то она не виснет, а выводит соответствующее сообщение.

    2. Ввел ключ /H - подсказку по командной строке. Для тех, кто не любит читать доки, а таких у нас большинство.

    3. Добавил управление линией Control, используя вышеописанное расширение API. Вообще-то, по логике, эта функция собственно к mount (управлению монтированием образов) не особенно относится. Но уж больно не хотелось писать еще одну, отдельную утилиту. Так что пока засунул сюда, а там посмотрим.

    MOUNT /K OFF - отключает перезагрузку от Control
    MOUNT /K ON - включает ее обратно.

    Режим OFF следует включать перед запуском тех программ, которые лезут в интерфейс и самопроизвольно трогают сигнал Control. Если программа в процессе работы вдруг теряет доступ к диску, а лампочка control в контроллере вдруг зажигается - значит, этот режим как раз вам и нужен.

    В прошивке контроллера, кроме ввода нового вызова API, я исправил некоторые мелкие ошибки, ввел более тщательную диагностику наличия карты - теперь, в случае отстутствия карты, в терминал выдается сообщение "SD карта не найдена", и вымаргивается ошибка 5. Разрешил даже в ошибочном состоянии прерывание от сигнала Control - это позволяет запустить загрузчик фазы 1 и, таким образом, проверить работу интерфейса ВВ55.
    Ну и, самое главное, включил, наконец, режим удвоения частоты SPI - теперь карта работает на максимально возможной скорости. Правда, производительности это добавило только процентов 20 - сказываются тормоза драйвера VinxFS.

    Во вложении лежит новая прошивка контроллера, KDI с обновленным mount, и дока по API.

    На сегодняшний день состояние проекта такое.

    - Схема контроллера полностью готова и проверена мной при двухкратной сборке - на вставной макетке и окончательной плате. Еще ESL скоро доделает свою плату - будет уже три успешных сборки.

    - API уже устаканили и по протоколу, и по составу команд. Реализован полностью и в прошивке контроллера, и в эмуляторе. И документация по API уже написана.

    - Прошивка контроллера готова и более-менее отлажена. По крайней мере, последние дни я погонял несколько стресс-тестов и ошибок не выловил.

    - Клиентская утилита управления образами дисков MOUNT готова и более-менее проверена. К сожалению пока я один только могу ее проверить, но скоро и ESL подтянеся.

    - Эмулятор тоже почти готов. В нем еще нет поддержки последнего вызова A1, но ESL его, надеюсь, прикрутит. Я этим заниматься не стал, отлаживал на реальном железе, тем более что оно заработало практически с первого раза.

    Ну, вроде бы, и все. Теперь мне надо сесть и написать полную документацию по проекту - наверное, займусь в выходные. А ESL обещал доделать универсальный загрузчик систем, тоже являющийся важной частью проекта. Также ему надо доделать свою плату контроллера, и потестировать мою прошивку у себя. После этого можно объявлять релиз. Интересно, хоть кто-нибудь, кроме меня и ESL, соберет себе такое устройство?

    Из дальнейших планов я хочу подправить BIOS для поддержки больших дисков. По первым прикидкам - можно примерно 5Мб диск сделать, на большее не хватит ОЗУ. А то сидеть в 21 веке на мелких 800м образах как-то уже ломает.

    Еще тут Marinovsoft высказывал хотелку графической морды над утилитой mount. Может, кто-нибудь возьмется? Я, как старый системщик, не особо умею делать гуи, всю жизнь предпочитал комстроку, за редким исключением. Мне проще прошивки писать, чем интерфейс пользователя.

    Вообщем, мы потихонечку подбираемся к концу. Даже грустно немного. Хорошая была тренировка для мозгов.
    Вложения Вложения

  10. #9

    Регистрация
    17.04.2011
    Адрес
    Санкт-Петербург
    Сообщений
    328
    Спасибо Благодарностей отдано 
    32
    Спасибо Благодарностей получено 
    209
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Попробовал из опробованных ESL первую попавшуюся на глаза программу - DANDARE, игрушка какая-то. Отключил Control, запусил - повисла. Причем контроллер в перезагрузку не уходит, ждет команд, а команд нет.
    Пришлось ввести в эмулятор обработку команды A1. Как ни странно, в эмуляторе DANDARE после этого отлично заработал. Получается, что эта программа кроме Control что-то еще портит в интерфейсе ППИ3. Поеду на дачу, по дороге попробую разобраться.

    Прикладываю подправленные файлы эмулятора, может кому пригодятся. PPI.C я брал последний из репозитория.
    Вложения Вложения
    • Тип файла: 7z emu_a1.7z (7.6 Кб, Просмотров: 81)

  11. #10

    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    15
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    УРА заработала !
    забыли припаять три проводка на SD

    но заработала почти

    почти все время говоит
    CS ERR: r:ff c:0

    я добавтл вывод комманды в консоль
    вот лог
    Код:
       *** Extrom - SD ***
    
     Reset flag:1
    
     CARD MID=2  OID=4d54
     Product - SD256
     rev 13  serail -25735
     -- Каталог диска --
    0: LOADER  BIN
    1: ROM1    BIN
    2: ROM2    BIN
    3: ROM3    BIN
    4: ROM4    BIN
    5: ROM5    BIN
    6: MOUNT   CFG
    7: SYSTEM  BIN
    8: ROM6    BIN
    9: DISK       
    
    Total 10 files
    
    Загрузка фазы 2
    
    Loader file: LOADER.BIN
    Loader base: 20
    Loader si
             Loader base: 20
    Loader size: 3
     Block # 1er base: 20
    Loader size: 3
     Block # 2
    Загрузка фазы 2 окончена
     Mount A: DISK/DISKA.KDI  SPT=40
    
     Mount B: DISK/DISKB.KDI  SPT=40
    
    CMD:0 DRV:0 TRK:0 SEC:0 csum:0
    CS ERR: r:ff c:0
    для ром5 тоже ошибки
    но один раз - запустилось, некоторое время поработало а потом опять
    Код:
    CMD:f1 DRV:0 TRK:0 SEC:0 csum:f0
    CMD:f0 DRV:0 TRK:0 SEC:0 csum:ef
    CMD:f0 DRV:0 TRK:0 SEC:0 csum:ef
    CMD:f0 DRV:0 TRK:0 SEC:0 csum:ef
    CMD:f0 DRV:0 TRK:0 SEC:0 csum:ef
    CMD:f0 DRV:0 TRK:0 SEC:0 csum:ef
    CMD:f0 DRV:0 TRK:0 SEC:0 csum:ef
    CMD:f1 DRV:0 TRK:0 SEC:0 csum:f0
    CMD:f1 DRV:0 TRK:0 SEC:0 csum:f0
    CMD:f1 DRV:0 TRK:0 SEC:0 csum:f0
    CMD:f1 DRV:0 TRK:0 SEC:0 csum:f0
    CMD:f1 DRV:0 TRK:0 SEC:0 csum:f0
    CMD:f1 DRV:0 TRK:0 SEC:0 csum:70
    CS ERR: r:f0 c:70
    есть идеи какие ?
    p.s. кондеры еще не вешал по питанию.

    еще заметил что тот-же КТДП из ROMx не всегда стартует, в основном зависает после вывода первой буквы П
    в слове Перемещение КТДП.
    Последний раз редактировалось esl; 18.07.2014 в 02:06.

Страница 14 из 35 ПерваяПервая ... 101112131415161718 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Open source firmware for the Spectrum
    от zx-kit в разделе Разный софт
    Ответов: 60
    Последнее: 29.05.2014, 13:53
  2. open-source эмуляторы под .NET
    от Sawyer в разделе Эмуляторы
    Ответов: 1
    Последнее: 04.01.2011, 17:47
  3. GP2X F100 Open Source Gaming Console
    от CodeMaster в разделе Зарубежные компьютеры
    Ответов: 3
    Последнее: 12.06.2010, 23:51
  4. Open Source эмуль...
    от rg_software в разделе Эмуляторы
    Ответов: 50
    Последнее: 06.12.2006, 11:57

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •