fk0, легенда (01.11.2013 18:11, просмотров: 285) ответил Илья на вот тут (ниже ссылка), люди рассказывают как отлаживать chipkit... короче, один из шагов - импорт ELF и отладка его в MPLAB X. Т.е. "должно работать"
Рассказываю: Создал новый проект с импортом elf, нажал debug, оно 5 минут программировало realice, потом запрограммировало прошивк, написало "running". нажимаю pause -- target halted. Стек не показывает: unable to access due to optimization... напоминаю, что в MPLAB без X то же самое, даже если всё пересобрать с -O0. Индус просто забил на часть кода... Выбрал disassemly listing file. 5 минут ждал. получил сообщение "file seems to too large (2MB) to safely open..." нажал "Yes open". Есть дизассемблер поделённый по файлам (*.c). В нём есть метки в инструкциях (call куда-то), но нет меток в начале функций (т.е. непонятно этот кусок кода -- он от какой функции, только файл понятен). Есть другой дизассемблер -- "PIC program memory view". Там есть метки и показывается текущее значение PC. И самое страшное: в этих двух окнах дизассемблера текст НЕ СОВПАДАЕТ частично. И в части дизассемблера, и в части опкодов (HEX). Офигеть. Сообразил почему. Потому, что в одном из них (который disassembly listing) инструкции идут не по порядку. А вот с таким порядком адресов, местами, например: 02420A, 02420C, 02420E, 024200, 024202, 024204, 024208, 024212, 024214... и всё в таком духе. Дважды офигеть.
В окне watch глобальные символы показывает. Но только глобальные (а static в пределах модуля, а локальные?) Нет самого главного. Привязки адреса PC к файлу и строке программы на C. Зачем тогда всё остальное? Бреакпоинты по C исходникм тоже не ставит, молча ничего не делает, только в окне breakpoints пишет unrecognized мол.
Сделал File->Import HEX/ELF с replace project. Стал находить C файлы, но не все, а только соответствующие .o файлам. Если в один .c был #include "другой.c", то включенный другой файл уже не находит и не отлаживает (поведение аналогично MPLAB-без-X, только тот работает "в 10 раз быстрей")
Сделал File->Import для cof 2 раза. Не работает.
Выводы -- для ELF работает через раз. Сам проект из ELF не работает... видимо из-за отличий компилятора.
[ZX]