Перейти к содержанию
    

Kofey Nik

Участник
  • Постов

    41
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Kofey Nik

  • Звание
    Участник
    Участник

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. Материнская плата имеет интегрированный видеоадаптер с выходом VGA и DVI, Вывод команды lspci 00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03) 00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03) Вопрос: этот адаптер имеет два различных аппаратных устройства - для VGA и DVI, или DVI просто изменяет цифровой формат того же сигнала? Смысл вопроса в том, возможно ли на этой плате организовать рабочий стол на двух мониторах, подключенных соответственно к этим выходам (VGA и DVI). Пока у меня получается только дублирование изображения, а технологии типа Xinerama не работают (при включении ее опции ничего не меняется).
  2. Везде пишут: Эплайлет (applilet) - новый вид бесплатного по для микроконтроллеров NEC захожу на их сайт ренесас и вижу, что "бесплатное" ПО стоит $140, а страниица freesoft удалена. Но раз пишут, значит, раньше оно было свободным? И где-то остались интернет-островки, где эта программа есть бесплатная. Кто-нибудь подскажет?
  3. Ваши заключения верные, по крайней мере из прошивки флэш вызывается корректная и логичная подпрограмма с адресом 61AE --- seg_01:61AE seg_01_61AE: seg_01:61AE ; seg_01_61AE+5j seg_01:61AE mov A, @R1 seg_01:61AF lcall code_1AB0+1 ; - здесь проблема: при вызове попадаем на середину команды (т.е. операнд) - видимо, ошибка дизаса seg_01:61B2 inc R1 seg_01:61B3 djnz R6, seg_01_61AE seg_01:61B5 ret А в чем проблема, я уже написал - пропадают все данные из первых 8К внешнего ПЗУ, этих данных больше нигде нет, а они нужны - это служебные слова, они используются при индикации работы аппарата. Вот я и решил уточнить у сведующих людей. Кроме того, есть вопрос (в познавательских целях) код во флэш обрывается так: 12 (lcall) 61 (первый байт адреса вызываемой подпрограммы). Следующий байт (который должен служить младшим байтом адреса подпрограммы) уже находится во внешнем ПЗУ, а как мне представляется, выборка команд происходит целиком, за один цикл, так что здесь процессор не может получить полноценную команду. Или нет проблем получить недостающий этой команде байт, который находится уже в другом носителе? Но кажется, я начал понимать, в чем тут дело - кропме PSEN к выводу ОЕ приходит еще и сигнал RD !! Т.е. эти данные доступны по обычному циклу чтения внешней памяти (не программ). Т.е. как Вы и предположили - "используются для хранения константных данных". Вроде, все ясно. Всем спасибо.
  4. Возможно. Но я предлагаю Вам самому посмотреть на этот фрагмент окончания прошивки во внутренней флэш: code:00001FC7 mov DPTR, #0xBF93 code:00001FCA mov A, RAM_73 code:00001FCC dec A code:00001FCD lcall code_1B4E; (см. ниже) code:00001FD0 mov R6, #0xB code:00001FD2 mov R1, #0x58 ; 'X' code:00001FD4 lcall code_12E0 ; (см. ниже) code:00001FD7 mov DPTR, #0xC128 code:00001FDA mov R4, RAM_59 code:00001FDC mov RAM_8, RAM_58 code:00001FDF mov B, #8 ; B-Register code:00001FE2 lcall code_493B ; вызов кода за пределами 8К code:00001FE5 mov R6, #0 code:00001FE7 lcall code_1CE5 code:00001FEA mov RAM_63, RAM_73 code:00001FED mov DPTR, #4 code:00001FF0 mov R1, #0x5A ; 'Z' code:00001FF2 mov R6, #0xA code:00001FF4 lcall code_61AE ; вызов кода за пределами 8К code:00001FF7 mov DPTR, #0x39 ; '9' code:00001FFA mov R6, #8 code:00001FFC mov R1, #0x68 ; 'h' code:00001FFE lcall code_61FF ; вызов кода за пределами 8К Из них подпрограмма, вызываемая из 1FCD (lcall code_1B4E) --- code:00001B4E code_1B4E: code:00001B4E mov B, #0x10 ; B-Register code:00001B51 mul AB code:00001B52 add A, DPL ; Data Pointer, Low Byte code:00001B54 mov DPL, A ; Data Pointer, Low Byte code:00001B56 mov A, B ; B-Register code:00001B58 addc A, DPH ; Data Pointer, High Byte code:00001B5A mov DPH, A ; Data Pointer, High Byte code:00001B5C ret - совершенно логичный код. Далее - подпрограмма, вызываемая из 1FD4 (lcall code_12E0) --- code:000012E0 code_12E0: code:000012E0 clr C code:000012E1 lcall code_12F2 code:000012E4 mov @R1, A code:000012E5 ret как видно, она вызывается из 1FD4, а также из 1F43, при этом вызов из 1F43 происходит с такими же, как и в случае вызова из 1FD4, инициализирующими параметрами: mov R6, #значение mov R1, #значение Это точно код, нет никаких сомнений.
  5. Получить дизассемлированный код мне дело двух минут, и конечно же, я это давно уже сделал и отдельно для флэш, и отдельно для ПЗУ, и для обоих вариантов компоновки единого файла программы микроконтроллера. Нет, код совершенно логически корректный, в нем используется в том числе команда lcall code_12E0, подпрограмма которой корректна, завершается командой ret, и на нее имеются ссылки из других фрагментов программы флэш с аналогичными инициализирующими параметрами. Это точно не данные, это код. Кроме того, в последнем фрагменте кода флэш идет вызов подпрограмм по адресам 61AE и 61FF, которые физически располагаются во другом носителе программного кода (внешнем ПЗУ). Слушайте, давайте не будем делать из меня наивного человека, который только вчера занялся цифровой схемотехникой. Системная плата вовсе не случайно имеет внешнее ПЗУ с подсоединением PSEN, кроме того аппарат просто не может работать в объеме программы 8 килобайт - это ему на один зуб не хватит. если уж так важны дополнительные доказательства, то уверяю Вас, выборка команд по формированию PSEN происходит регулярно.
  6. AHTOXA Конечно же, ЕА=1. Не случайно же первый байт во флэш - команда стандарного для этих процессоров безусловного дальнего перехода ljmp (02h). Палыч, ну это же прописные истины, мне они ведомы. :) Я только не понял, как можно использовать результаты дизассемблирования одной прошивки для другой. Для ядра микроконтроллера программа вместе с данными (получаемыми с помощью команды MOVC) представляет одно адресное пространство (если только не используется переключение между банками с помощью управляющих линий, но это совсем уж сложный случай, за такие я бы не взялся - там надо иметь поистине шахматическую память). В программе используются дальние переходы, которые могут быть физически быть из внутренней флэш во внутреннюю и наоборот. Вот его-то мне и надо получить, чтобы понять логику программы, чтобы исправить в нужных местах код. Ну смотрите - если после команды mov R1, #0x68 идет не следующая команда, а массив данных, этот код обрывается для процессора, и тогда он воспринимает данные за команды (например, байты 20 хх хх примет за код "JB имя_регистра адрес_ближнего_перехода"), в результате процессор просто стопорится или ресетится, дойдя до ситуации исключения. Вот почему я был удивлен таким построением суммарной прошивки. Обращения к данным можно просто отследить - для этого используется команда MOVX, если это не память программ, а в нашем случае это именно память программ (обращение в цикле получения команды по сигналу *PSEN). В том-то и дело, что во внешнем ПЗУ находится основной массив исполняемой программы устройства.
  7. Попробовать дизассемблировать - нужно исправить одно ограничение в прошивке. Опыт с 51-м был. Целостная прошивка - ну, в аппаратном виде носителей программы два, а мне нужно получить один непрерывный файл с непрерывным адресным пространством. Начиная с какого адреса во внешнем ПЗУ? Максимальный_адрес +1 ? Это я и имел в виду. Первый байт равен 02 только во внутренней флэш, ПЗУ начинается с 20, следующий тоже 20 - это символы кодовой страницы ASCII - они нужны для работы программы, затенять их внутренней прошивкой чревато их исключением. Вот в чем проблема для меня. если наложить внутреннее содержимое (из флэш) на первые 8К пространства внешнего ПЗУ программ, то при дизасе получается галиматья - ... code:1FFA mov R6, #8 code:1FFC mov R1, #0x68 ; 'h' ; - после этой команды нет перехода на исполняемый код !!! code:1FFC ; END OF FUNCTION CHUNK FOR start code:1FFC ; --------------------------------------------------------------------------- code:1FFE .byte 0x12 code:1FFF .byte 0x61 ; a code:1FFF ; end of 'code' code:1FFF seg_01:00002000 ; =========================================================================== seg_01:00002000 seg_01:00002000 ; Segment type: Pure code seg_01:00002000 ;.segment seg_01 seg_01:00002000 ; .equ $, 0x2000 seg_01:00002000 ; START OF FUNCTION CHUNK FOR seg_01_4FC8 seg_01:00002000 seg_01_2000: .byte 0xFF ...
  8. Прошивки AT89S8252

    У AT89S8252 имеется прошивка внутренней флэш программ (8к) плюс внешняя ПЗУ (64к). Как получить целиковый файл исполняемой программы? По-идее, поскольку в таких случаях вначале исполняется внутренняя прошивка а потом вшнешняя, то надо наложить эти 8к на начало ПЗУ, но тогда исчезнут масса служебных строк, необходимых программе. А если состыковать файл ПЗУ в конец файла внутренней флэш, тогда размер прошивки превысит 64К - как процессору с 16-разрядной шиной адреса добраться до конца такой программы?
  9. Какие существуют аналоги? Даташита на второй. Что подойдет (в корпусе SO-8)&
  10. Флэш в моей задумке предназначена для записи дампа внешнего ОЗУ микропроцессорной системы и просмотра его в hex-редакторе. Система базируется на 8031, это микропроцессорный прибор, работающий по заводской (штатной) программе. Штатное ПЗУ я заменяю своим, прошитым моей программкой-писалкой. Вначале флэш очищаю на программаторе, затем вставляю в плату и включаю питание, и тогда она пишет в себя с образ хОЗУ размером 64к байт. Пишется не странично, а побайтно. Для контроля процесса программка пикает вначале считывания(записи) и в конце. Программка предусматривает контроль каждого записанного байта (Data Polling) в каждой итерации. Но через неколько раз успешной записи дампа писать в себя в системе флэш вдруг отказывается, причем судя по тому, что раздается звуковой сигнал, свидетельствующий о завершении программирования всего дампа, полинг был успешен, и все байты должны быть записаны. Программатор же показывает абсолютно чистую флэш! При всем этом на программаторе флэш продолжает успешно писаться-читаться. Та же флэш используется в штатной (заводской) системной прошивке прибора, но едва программа прошивки обращается к такой глюкнутой флэш, начинается программный сбой. Я уже не помню, возможно, отказ флэшки начинается после того, как я забываю предвыарительно стереть ее на программаторе. Умирает на моем столе уже вторая и с похожими симптомами. Вопрос заключается в двух моментах - - что убивает флэш - почему она при этом пишется нормально в программаторе (Тритон v.5 и Стерх) - можно ли ее как-то вернуть в дееспособное состояние? Спасибо.
  11. Спасибо за ответ. Нужно что-нибудь с крэком и полной версии.
  12. Интересуют, а также по ним макросы, типовые решения, включая реализацию высислений с многобайтными числами и т.п. Есть кто-нибудь из Нижнего Новгорода здесь?
  13. Посоветуйте, какой из ныне доступных (и имеющих описательную литературу в продаже, а также средства разработки программ) микроконтролеров имеет аппаратные интерфейсы I2c и RS-232, причем I2c должен уметь работать в режиме слэйв. Хочу сделать простой и надежный преобразователь. Увы, программная реализация слэйв нежелательна.
  14. Вопрос то стоял о готовом устройстве, а вы предлагаете делать самому. Для микроконтроллера надо писать программу, а имитация Слэйв-устройства программно гораздо сложнее, чем Мастера. Хорошо еще, что он будет только на одной этой задаче, а то все процессорное время уйдет на опрос наличия Старт-условия.
  15. I2C to RS-232

    Существуют ли микросхемы преобразователя интерфейсов I2c в RS-232 ("полудуплекс")? Ну, или одноплатные микроконтроллеры? Т.е. ему можно задать адрес, он будет имитировать Slave, а на своем выходе выдавать байтами информационные пакеты, освобожденные от старт и стоп условий и адресных данных. Просто, не уверен, что в винде, даже в хрюше, можно сымитировать программно слэйв-устройство через параллельный порт. Если б Мастера, тогда другое дело.
×
×
  • Создать...