Отладка микропроцессора

Один из наших сопроцессоров — 8-битный микропроцессор. Его основная роль заключается в управлении аппаратным обеспечением, которое обрабатывает флэш-память. Мы подозреваем, что код, который он выполняет, очень неэффективен, поскольку мы замерили низкие скорости при чтении/записи во флэш-память. Проблема в том, что у нас есть только один порт J-TAG, подключенный к основному процессору, поэтому его отладка невозможна. Что у нас есть, так это регистр, доступный из ЦП, который содержит программный счетчик микропроцессора. Плохая новость заключается в том, что микропроцессор работает на другой частоте, чем ЦП, поэтому контролировать его программный счетчик снаружи также сложно. Измерение времени внутри микропроцессора также очень сложно, поскольку его регистры имеют длину всего 8 бит. Излишне говорить, что код находится на ассемблере и очень сложен. Как бы вы подошли к этой проблеме?


person Shmoopy    schedule 22.12.2012    source источник
comment
не совсем уверен, что вы спрашиваете здесь. в чем проблема? Вы хотите иметь возможность отлаживать микропроцессор?   -  person brianSan    schedule 23.12.2012
comment
Если вы просто хотите посмотреть, что делает микро, подключите логический анализатор?   -  person JasonD    schedule 23.12.2012
comment
@JasonD Мы использовали осциллограф и увидели задержки. Мы просто не можем понять, кто виноват — наша оперативная память, код или, может быть, даже флэш-память.   -  person Shmoopy    schedule 23.12.2012
comment
запись вспышкой очень медленная, и точка. выясните, есть ли что-то сверх этого. некоторые вспышки могут работать быстрее в зависимости от того, какой набор команд вы используете (но тот же самый набор может быть медленнее для сопоставимой части от другого поставщика). скорость программного обеспечения влияет на медлительность между блоками на части, и ваш 8-битный микропроцессор может не работать быстрее или эффективнее, чем он уже есть. Простейшая оптимизация флэш-памяти состоит в том, чтобы не записывать 0xFF, добавить небольшой код для проверки всех единиц для цикла записи и пропустить этот цикл. оптимизация становится зависимой от данных.   -  person old_timer    schedule 23.12.2012
comment
Не уверен, почему вам нужен сопроцессор только для флэш-памяти, но вы также можете потерять значительное количество времени для связи между вашим основным процессором и этим 8-битным сопроцессором.   -  person Alexandre Vinçon    schedule 23.12.2012
comment
Устройства JTAG могут быть подключены последовательно, так что один порт позволяет вам общаться с несколькими процессорами. Вы должны быть в состоянии подключиться к вашему микро через JTAG. Если это не так, то у вас чрезвычайно серьезный сбой в конструкции оборудования. Кого-то следует уволить, если вы построили систему, в которой вы не можете связаться с микроконтроллером через JTAG.   -  person TJD    schedule 28.12.2012


Ответы (1)


Излишне говорить, что код находится на ассемблере и очень сложен. Как бы вы подошли к этой проблеме?

Я бы посоветовал вам начать с (или сгенерировать) спецификации требований для этой части и повторно реализовать код на C (или даже осторожно использовать подмножество C++). Если «сложность», которую вы воспринимаете, заключается просто в коде, а не в требованиях, было бы неплохо спроектировать это - это только сделает обслуживание в будущем более сложным, подверженным ошибкам и дорогим.

Одним из распространенных аргументов в пользу использования ассемблера являются размер и производительность, но чаще всего большой объем кода на ассемблере далек от оптимального; чтобы сохранить уровень производительности и удобства обслуживания, часто используется и повторно используется «шаблонный» код, который не адаптирован к конкретной ситуации, тогда как компилятор будет анализировать изменения кода и выполнять «микрооптимизацию», которую проектировщики системы действительно не должен париться. Сделайте ваши алгоритмы и структуры данных эффективными и оставьте детали целевого набора инструкций компилятору.

Даже без возможности прямой отладки на цели использование языка высокого уровня позволит создавать прототипы и моделировать, например, на ПК.

Даже если вы сохраните код на ассемблере, если ваши инструменты разработки включают симулятор набора инструкций, это может быть хорошей альтернативой аппаратной отладке; особенно если он поддерживает сценарии отладчика, которые можно использовать для имитации поведения аппаратных устройств.

Все это говорит о том, что смотреть на это как на «черный ящик» и делать вывод о том, что код неэффективен, — это своего рода скачок. Например, какая флэш-память кажется медленной? Как он связан с микроконтроллером? И как вы измеряли эту производительность? Флэш-память по своей природе медленная - особенно запись и стирание страниц; проверьте технические характеристики флэш-памяти, прежде чем делать какие-либо выводы о производительности программного обеспечения.

person Clifford    schedule 23.12.2012