Могу ли я использовать JTAG для отладки моей программы поверх встроенного Linux? - PullRequest
5 голосов
/ 06 января 2012

Я использую at91sam9260 для своих разработок.В нем запущено ядро ​​Linux, и я запускаю собственное программное обеспечение поверх него.

Мне было интересно, смогу ли я использовать отладчик JTAG для отладки программного обеспечения, над которым я работаю, не видя многого из того, чтона ядре Linux?

Я спрашиваю об этом, потому что думаю, что я могу усложнить отладку своего программного обеспечения, наблюдая за полным выполнением Linux.

Другими словами, я хотел бы знатьесли при отладке с помощью зонда JTAG может быть какой-то уровень абстракции?

Ответы [ 4 ]

3 голосов
/ 06 января 2012

Вероятно, нет - насколько я знаю, большинство отладчиков JTAG предполагают возможность установки точек останова в процессоре.В многозадачной ОС это также останавливает ядро ​​ОС.

Встроенные ОС, такие как QNX, имеют отладчики, которые работают поверх ядра ОС и обмениваются данными через Ethernet.

2 голосов
/ 06 января 2012

Как правило, да, вы можете использовать jtag в качестве отладчика, абсолютно не связанного с тем, какое программное обеспечение вы используете на этом процессоре. Проблемы могут возникнуть в кеше, например, если вы остановите процессор, чтобы изменить некоторые инструкции в ram, и перезапустите, то изменение инструкций в ram - это доступ к данным, который проходит не через кеш инструкций, а через данные. кеш, если у вас есть отдельная инструкция и кеш данных, они включены, и некоторые из команд, которые вы изменили, находятся по адресу, который находится в кеше команд, вы можете довольно быстро запутаться с новыми и устаревшими инструкциями, подаваемыми в процессор , Linux любит использовать кэши, если они есть.

Во-вторых, это mmu, процессор / jtag, вероятно, работает с виртуальными адресами на стороне процессора mmu, а не с физическими адресами, поэтому в зависимости от того, как работает оборудование, например, если вы устанавливаете точку останова по адресу в блок отладки в процессоре и задача операционной системы переключаются на другую программу / поток в том же адресном пространстве, вы будете устанавливать точку останова на неправильной программе по правильному адресу. Если отладчик / процессор устанавливает точки останова, изменяя инструкцию в ram, то вы сталкиваетесь с проблемой кеша, приведенной выше, ЕСЛИ не кешируется, тогда вы сломаете правильную инструкцию в правильном потоке, но тогда у вас будет проблема с кешем.

Итог, безусловно, если процессор поддерживает отладку на основе jtag, которая не изменяется в зависимости от того, какое программное обеспечение вы выберете для запуска на этом процессоре.

2 голосов
/ 06 января 2012

Это зависит от устройства JTAG и его драйвера. Лично мне известно только одно устройство, способное на это: XDS560 + Code composer studio (CCS). Но могут быть и другие.

Предлагаю проконсультироваться с производителем вашего устройства.

0 голосов
/ 12 марта 2014

Для ARM семейство Asset Arium - , заявленное для возможности отладки кода приложения. Хотя я не пробовал.

...