Как преобразовать файлы *.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).

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

ILUHA
toxa:

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

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

На самом деле цель была сделать на 675-ом некий симбиоз рега с этого сайта и того на 84-ом( програмирование нейтрали) +програмирование кол-ва банок с передатчика для мягкого отключения мотора при снижении напряжения не банках. А написать линейную прогу с такими функциями это надо очень исхитриться да и памяти по-больше.
просто времени нет изобретать колесо, а вот готовые модули сшить во едино это проще и быстрее( если только они грамотно написаны)
Вообще в плане красивого и лаконичного написания ИМХО выделяется прога на EAGLE MIXER.

AlexAndr=

А никогда не задумывались, что будет, если одновременно на выходах 17 и 18 в вашей схеме появятся “1”? И в каком состоянии будут в этот момент оба силовых транзистора?

Уточняю- моя схема справа(без оптронов).Мне как раз и надо чтоб при подаче команды “нейтраль” одновременно на выходах 17 и 18 присуцтвовала “1”.Тогда оба биполярных транзистора будут открыты и через них “минус” поступит на затворы полевых транзисторов, закрывая их.
Вместо “тормозных” транзисторов N-типа действительно можно поставить транзисторы P-типа. Тогда придётся инвентировать только один вывод микроконтроллера, но прошивку править всё равно придётся.
Кстати, какие бы вы посоветовали транзисторы на “газ” и “тормоз” для управления автомодельным двигателем на 10-13 витков, если в моём старом регуляторе (силовая часть схемы как в приведённой выше “моей” схеме) транзисторы “газа” IRF1010N (4 запаралеленых) были чуть тёплыми, а “тормозные” IRF1010N (2 запаралеленых) грелись что аж скотч расплавляли?

Добавлено

Дизасемблировать *.hex в *.asm я уже научился, а чем их теперь после редактирования из *.asm в *.hex преабразовать?

ILUHA
romychs:

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

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

romychs

Ту “Тормозные” у вас по видимому грелись из за того, что “встроенные” в полевики диоды, как многие отмечают, не того качества. Попробуй использовать внешний диод Шоттки в параллель мотору.

Назад ассемблируется MPASM, но гораздо удобнее это сделать в MPLAB, взять можно на www.microchip.com, www.microchip.ru

Нужные транзисторы можно подобрать на www.irf.com воспользовавшись параметрическим поиском.

dejavue…