Как преобразовать файлы *.inc в *.hex ?

AlexAndr=

При програмировании микроконтроллеров у меня возникла необходимость преобразовывать файлы прошивки с расширением .hex в файлы .inc для редактирования.
Подскажите пожалуста, возможно ли преобразовать файлы *.hex в *.inc и наоборот *.inc в *.hex ?Какими программами это можно сделать?

toxa
Alex@ndr

Подскажите пожалуста, возможно ли преобразовать файлы *.hex в *.inc и наоборот *.inc в *.hex ?Какими программами это можно сделать?

файлы *.inc - обычно содержат не исходный текст программы, а либо определения, либо библиотеки подпрограмм. основной файл имеет обычно расширение *.asm, если, конечно, исходная программа была написана на ассемблере.
Файл *.hex - это исполняемый код, типа файлов *.com. Разница в том, что файл *.hex предназначен для заливки в контроллер и может содержать данные для программы - программатора, но это не имеет значения.
Если программа была написана, например, на си, то перевести ее обратно в исходник практически не представляется возможным, можно получить лишь аналогичный текст на ассемблере. Даже компилируя исходник написанный на ассемблере и затем дизассемблируя его, в 99% случаев получится отличная от оригинала программа.
Для того, чтобы перевести *.hex в *.asm необходим дизассемблер. Не для всех контроллеров имеются дизассемблеры, но если программа достаточно мала, то можно сделать что-то типа этого:

  1. перевести hex в bin. то есть получить бинарное представление программы в файле. все зависит от формата hex-файла. это не скомпилированная программа в чистом виде, как минимум это перевод байтов программы в hex представление. в общем, нужно понять, какие части программы размещаются по каким адресам памяти контроллера. в общем, все непросто. 😃
  2. сверяясь с документацией на контроллер, последовательно, используя таблицы команд получить текст программы, по возможности не ошибаясь в рассчете смещений в выполнении переходов, иначе текст программы получится совсем не таким, каким должен получиться.
    Процесс нудный и долгий. Без должного опыта вероятность успеха стремится к нулю. Но все же, попробовать стоит.
AlexAndr=

Для того, чтобы перевести *.hex в *.asm необходим дизассемблер. Не для всех контроллеров имеются дизассемблеры…

Существуют ли дизассемблеры для микроконтроллеров типа PIC16F84, PIC12F675, PIC12C509… и где их можно скачать?

ILUHA
AlexAndr=:

Существуют ли дизассемблеры для микроконтроллеров типа PIC16F84, PIC12F675, PIC12C509… и где их можно скачать?

В mplabe делаешь импорт в память hex файла и все… Только если прога длинная это такой геморой в дизасм коде копаться… Лучше найди исходники…

romychs

pic16f84.narod.ru - программатор с дизассемблером. Загружаете в него hex и нажимаете соотв. кнопочку. Так же старый добрый IDA (интерактивный дизассемблер) поможет вам, но его покупать надо, или не надо, если фантазия есть 😃

toxa

Кстати да, идой можно. Вы бы сразу написали, какой процессор, было бы легче. А что за программа-то? Может быть проще точно такую же написать, чем эту дизассемблировать.

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

AlexAndr=

Скачал я MPLAB IDE v7.00, установил, и мой Win98se перестал грузится…В Win XP MPLAB установился но при открытии файлов любого типа, появляется “Системе не удаётся найти указанный путь”.(Файлы в него импортироватся тоже не хотят)
Немогу понять это я чтото не так делаю, или проблемы в программе?
Пока буду дизассемблер IDA искать, может с ним больше получится…

ILUHA

Если найдете хоть одну рабочую ссылку на ИДУ поделитесь?

toxa
Alex@ndr

В Win XP MPLAB установился но при открытии файлов любого типа, появляется “Системе не удаётся найти указанный путь”.(Файлы в него импортироватся тоже не хотят)

Что за прошивка? Может ее не надо дизассемблировать?

AlexAndr=

Что за прошивка? Может ее не надо дизассемблировать?

Прошивка для регулятора скорости на PIC16F84(где скачивал схему уже не помню).У меня есть только версия Moto_v15.hex но она меня не устраивает по некоторым причинам.
Если кому нибудь встречалась более новая версия прошивки для PIC16F84 или файлы прошивки поддающиеся редактированию, подскажите пожалуста ссылку.

toxa
Alex@ndr

Если кому нибудь встречалась более новая версия прошивки для PIC16F84 или файлы прошивки поддающиеся редактированию, подскажите пожалуста ссылку.

Обычного регулятора, не бесколлекторник? Да в чем проблема! Их же как грязи, с исходниками, в любых видах. На сайте rcdesign целых два варианта: с реверсом и без! 😃

В любом случае, будет проще не дизассемблировать, а посмотреть исходники регуляторов с этого сайта, разобраться и написать (или адаптировать) прошивку для PIC16F84. Ошибок по-любому будет меньше.

drDen
AlexAndr=:

При програмировании микроконтроллеров у меня возникла необходимость преобразовывать файлы прошивки с расширением .hex в файлы .inc для редактирования.
Подскажите пожалуста, возможно ли преобразовать файлы *.hex в *.inc и наоборот *.inc в *.hex ?Какими программами это можно сделать?

Вот тут на этом же сайте программка она эти форматы читает может и перезаписывает….попробуй …. .

romychs

drDen
Если у Вас есть фонтан - заткни его, дай отдохнуть и фонтану. Говорил Козьма Прутков. Похоже, это про Вас.

Alex@ndr
Мне кажется, я знаю, о какой прошивке идет речь, о реверсивном регуляторе, который мы не раз здесь обсуждали. Я ее в свое время дизассемблировал как раз IDA. К сожалению, исходника не осталось, я в ней ничего для себя интересного не нашел, потому и не сохранил. Если вы ничего о принципе построения регуляторов и ассемблер, архитектуру для PIC не знаете, будет достаточно сложно понять, что там к чему.

ILUHA
toxa:

В любом случае, будет проще не дизассемблировать, а посмотреть исходники регуляторов с этого сайта, разобраться и написать (или адаптировать) прошивку для PIC16F84. Ошибок по-любому будет меньше.

Фишка в другом … в регуляторе с этого сайта на 509 pic не используются прерывания, а в f84 и в f675 они есть и это облегчает жизнь, поэтому аддаптировать бессысленно. А диссасемблировать moto_hex и сам пробывал , но терпенья не хватило, да и надобность отпала.

toxa
ILUHA

Фишка в другом … в регуляторе с этого сайта на 509 pic не используются прерывания, а в f84 и в f675 они есть и это облегчает жизнь, поэтому аддаптировать бессысленно.

Во-первых регуляторов на rcdeisgn ДВА: один с реверсом, другой без. Тот что с реверсом, цитирую:

Регулятор скорости с реверсом

Программа регулятора рассчитана под микроконтроллер PIC 12 F 675 или PIC 12 F 629. Это позволяет при необходимости менять характеристики прошивки. В принципе, можно использовать и PIC 12 C 509.

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

В-третьих, тип контроллера никак не указывает на использование в микропрограмме прерываний (только потенциальную возможность), наличие “защит” и прочее, а так же культуру программирования и отсутствие глюков.

AlexAndr=

Схемы регуляторов скорости на PIC12F675, PIC12C509 не обладают возможностью изменить их рабочие параметры(задать нейтраль, расход по газу и реверсу) в “полевых условиях”(без компьютера и програматора), а вот регулятор скорости на PIC16F84 адаптируется простыми нажатиями его кнопки.
А что касается нужных мне изменений в прошивке, они в основном сводятся к инвертированию сигналов на выходах микроконтроллера (выводы 17,18).
В разработанной мною схеме(приведён упрощённый вариант), нужно чтоб в режиме нейтрали на выводах 17,18 присуцтвовали логические единици(+5В), а при подаче каманды газ или тормоз, соответствующий вывод менял состояние на логический ноль. Вот для этого и нужно подправить прошивку.
Подскажите, неужели внести такое изменение в прошивку невозможно?
(Для сравнения привожу стандартную схему регулятора скорости на PIC16F84(там в режиме нейтрали на выводах 17,18 присуцтвуют логические ноли)).

romychs

А никогда не задумывались, что будет, если одновременно на выходах 17 и 18 в вашей схеме появятся “1”? И в каком состоянии будут в этот момент оба силовых транзистора?
Потом, вместо “тормоза” можно поставить транзистор “P” типа (многие так и делают), особого качества от него не требуется, но позволит вам убрать “утроитель”. Современные N- транзисторы не требуют таких высокий напряжений на затворе, по крайней мере, легко найти те, которые уже при напряжении 4,5 В будут открываться как надо (т.е. иметь маленькое Rdson).

И потом, вам нужен реверс или нет? Из вашего сообщения следует, что нужен, но на схеме Вы от него избавились…