objcopy для pic30/xc16 - где найти, аналоги
Я работаю с автономным проектом на PIC24, который требует загрузчика, и я хочу отладить его с помощью загрузчика. Я могу создать файл.hex, содержащий код приложения с загрузчиком, регистрируя собственный скрипт, который выполняется после компиляции.
Если я сейчас выберу "Launch Debugger Main Project" в меню, отладчик обычно выполняет сводный код и даже достигает запуска приложения, но не отображает отладочную информацию, поскольку она не содержится в файле.hex. Но если я выберу "Debug Main Project", отладчик загружает.elf-файл, который содержит отладочную информацию, но не содержит код загрузчика вместо созданного.hex-файла.
Есть ли способ заставить отладчик загружать отладочную информацию из одного файла и исполняемый код из другого файла? Или есть способ добавить раздел в скомпилированный файл.elf или полностью заменить код внутри него? Нет утилиты objcopy ни для pic30, ни для xc16, есть ли аналоги?
Это картинки на вопрос:
[1] https://s15.postimg.cc/59jynpikr/2018-06-27-0001.png
[2] https://s15.postimg.cc/kv1a7q7ej/2018-06-27-0002.png
[3] https://s15.postimg.cc/idpj0hid7/2018-06-27-0003.png
[4] https://s15.postimg.cc/8t5wdm0qz/2018-06-27-0004.png
[5] https://s15.postimg.cc/np4fl7rl7/2018-06-27-0005.png
1 ответ
Когда два HEX-файла объединяются с описанным вами методом, вся символическая отладочная информация теряется.
При запуске сеанса отладки из MPLABX загружается объединенное изображение, но для сеанса отладки загружается только символическая информация из "активного" проекта.
Обходной путь заключается в создании "специального" проекта, который собирает как загрузчик, так и приложение, так как один HEX-файл помещает всю символьную информацию в одно пространство имен.
Это, как правило, сложно и требует создания специального файла сценария компоновщика.