nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 18 Apr 2024 00:33



Reply to topic  [ 258 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7, 8 ... 18  Next
CGA и CF IDE адаптер на Altera MAX10 
Author Message
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
На всякий случай прикреплю мою поделку - показывает сегмент, с которого add-rom стартанул и дампит память на экран командой "D", как в дебаге. Сори за говнокод, но может чем-то поможет...


Attachments:
seg_tst.rar [3.92 KiB]
Downloaded 273 times

_________________
https://t.me/tronix_blog
23 Oct 2017 12:22
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 707
Location: WWW
Reply with quote
Спасибо за участие, но вроде я это все уже перепробовал... Вот мой код (последняя вариация на тему):

Code:
CODE         Segment   

            Assume   cs:CODE
         
            org      0h

            db      55h, 0AAh
            db      8
Start:

SDbios         Proc far

            jmp short BIOSstart
            
            db      'SD card BIOS v 0.1'   
BIOSstart:
            jmp      $
            retf
         
SDbios         EndP
            
            org      4096 - 16
            db      'E of ExtROM 04'
            
            org      0fffh
            db      0ffh            ; checksum byte
         
CODE         EndS


Что меня раздражает в таких случаях - при всей, на первый взгляд, таинственности происходящего, причина всегда оказывается совершенно неинтересной, а вот времени теряется куча...


23 Oct 2017 12:44
Profile
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
Этот код - он физически где?
Если на плате - память там вообще кто-то тестил на битовые ошибки?
Возможно, EB FE превращается во что-то другое.

И кстати, вот это "jmp short BIOSstart" - выполняется? Строка обходится?

В общем, я бы для начала убедился в нормальной работе памяти.

ps И, по зрелом размышлении. Чем тестируется "выполнение" или не-"выполнение"? Фактом вылета в основной биос? Плохая идея. Возможно, и hlt не работает, а все просто виснет нафик.
Зациклите в биосе карты какое-то вычисление и вывод на экран чего попало, разрядов от '0' до '9', например, но синхронно с вычислениями. Ну, т.е., чтобы просто видеть, выполняется оно или нет. Дальше будет видно, происходит что-то вообще или нет, и как долго.


23 Oct 2017 13:14
Profile
Doomed

Joined: 25 Aug 2009 07:02
Posts: 459
Location: Москва
Reply with quote
newold86 wrote:
Вот мой код

Лучше бы листинг, а то не код, а исходник для кода.
nop вставлять не пробовали? Типа:
Code:
BIOSstart:
            nop
            nop
            nop
            nop
            nop
            jmp      $   ; (или BIOSstart)
            nop
            nop
            nop
            nop
            nop
            retf

так, просто позырить, что получится.


23 Oct 2017 15:33
Profile
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
Mixa64 wrote:
Лучше бы листинг, а то не код, а исходник для кода.

Во-1, далеко не все асмы умеют в листинг. Во-2, если асм сделан не на коленке (а я таких и не видел, кроме своего), то код соотвествует исходнику в 99.(9)% случаев.
Mixa64 wrote:
nop вставлять не пробовали? <skip> так, просто позырить, что получится.

И что? Я не подкалываю, просто интересно, что ожидается позырить?


23 Oct 2017 15:38
Profile
Doomed

Joined: 25 Aug 2009 07:02
Posts: 459
Location: Москва
Reply with quote
Мне не на чем проверить. Идея - исключить фактор предвыборки. Скорее всего бред, но вдруг в чем-то будет отличаться. Ну и при условии, что из памяти по нужному адресу на шине процу выставляются нужные данные, конечно.


23 Oct 2017 15:56
Profile
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
Mixa64 wrote:
исключить фактор предвыборки.

Мысль понял. Но так как предвыборка для 8088 по сути есть выборка, то это вряд ли что-то даст. Это же не пень с его конвеером и out-of-order.
Да и проблема явно не в проце.
Mixa64 wrote:
Ну и при условии, что из памяти по нужному адресу на шине процу выставляются нужные данные, конечно

Ну вот потому я и предполагаю ошибки памяти. Непротрав/непропай, сопля и т.п. На крайняк - битая память сама по себе.


23 Oct 2017 16:45
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
newold86 wrote:

Code:
            org      0fffh
            db      0ffh            ; checksum byte
         
CODE         EndS


Ну и потом checksum рассчитывается внешней утилиткой, да? Он же не всегда ff, это вы так просто место зарезервировали?

_________________
https://t.me/tronix_blog


23 Oct 2017 21:36
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 707
Location: WWW
Reply with quote
Ого, сколько народу подтянулось ! :)

Vic3Dexe wrote:
Этот код - он физически где?

Внутри MAX10, где сэмулирован extension ROM

Vic3Dexe wrote:
Если на плате - память там вообще кто-то тестил на битовые ошибки?

Вывожу содержимое на дисплей - визуально все в полном порядке. Гонял по кругу минут 10 тест памяти (свой простейший) - тоже ошибок не выдал

Vic3Dexe wrote:
Чем тестируется "выполнение" или не-"выполнение"?

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

Mixa64 wrote:
Мне не на чем проверить. Идея - исключить фактор предвыборки

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

Tronix wrote:
Ну и потом checksum рассчитывается внешней утилиткой, да?

Естественно

Наверное, пару дней не смогу экспериментировать, буду только думать :)
Потом попробую взяться с "чистого листа"...


23 Oct 2017 22:51
Profile
Doomed

Joined: 25 Aug 2009 07:02
Posts: 459
Location: Москва
Reply with quote
newold86 wrote:
какая-то хитрая аппаратная проблема

Меня смутило только то, что процу скармливается последовательность jmp short; jmp short; ret far. Глубина конвейера предвыборки 4, там вторая jmp short и retf умещаются. Мало ли чо.
В общем, нужно приборами смотреть, что на шине происходит.


24 Oct 2017 02:28
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 707
Location: WWW
Reply with quote
Tronix wrote:
Потом вроде первым делом надо сделать jmp short куда-нибудь

Кстати, а вот это вообще откуда (необходимость обязательно сделать jmp) ?


24 Oct 2017 02:31
Profile
Doomed

Joined: 18 Nov 2013 02:38
Posts: 662
Location: Москва
Reply with quote
newold86 wrote:
Tronix wrote:
Потом вроде первым делом надо сделать jmp short куда-нибудь

Кстати, а вот это вообще откуда (необходимость обязательно сделать jmp) ?


Вот не могу сказать. Вроде-бы (читать: одна бабка другой сказала) что-то всплывает в моей памяти, что некоторые BIOS передают управление не на 0x04 оффсет, а куда-то дальше. И/или дополнительно проверяют EB четвертым байтом.
Или я путаю с ROM-basic'ом. Или я вообще все путаю. :mrgreen:

_________________
https://t.me/tronix_blog


24 Oct 2017 02:34
Profile
Devil

Joined: 30 Nov 2013 11:08
Posts: 707
Location: WWW
Reply with quote
Tronix wrote:
некоторые BIOS передают управление не на 0x04 оффсет

Я бы сказал, что все BIOS'ы передают управление НЕ на 0x04 оффсет :)

Code:
         MOV      ES:@IO_ROM_INIT,0003H   ; LOAD OFFSET
         MOV      ES:@IO_ROM_SEG,DS   ; LOAD SEGMENT
         
         CALL   DWORD PTR ES:@IO_ROM_INIT   ; CALL INIT./TEST ROUTINE


24 Oct 2017 02:43
Profile
Doomed

Joined: 16 Dec 2014 11:58
Posts: 370
Location: Киев
Reply with quote
newold86 wrote:
Внутри MAX10, где сэмулирован extension ROM

Так. И все-таки интересно
Vic3Dexe wrote:
И кстати, вот это "jmp short BIOSstart" - выполняется? Строка обходится?


Я бы помониторил сигналтапом шину, что там происходит в момент EB FE. Светодиод - это несерьезно. Если выполнение улетает в африку (т.е. в произвольное место памяти), вы эту ситуацию от hlt не отличите. Смотрите на шину, если проц остановлен, он это показывает.

Mixa64 wrote:
Глубина конвейера предвыборки 4

А не 6? У 8086 точно 6 по даташиту.
Tronix wrote:
И/или дополнительно проверяют EB четвертым байтом

Это в бут-секторе дискетки, и там обязательно нужен трехбайтовый jmp near (E9 XX XX).


24 Oct 2017 05:03
Profile
Doomed

Joined: 25 Aug 2009 07:02
Posts: 459
Location: Москва
Reply with quote
Vic3Dexe wrote:
Mixa64 wrote:
Глубина конвейера предвыборки 4

А не 6? У 8086 точно 6 по даташиту.

У этого да, три цикла шины на предвыборку, 8088 делает 4.


24 Oct 2017 06:20
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 258 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7, 8 ... 18  Next

Who is online

Users browsing this forum: No registered users and 7 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.