Перейти к содержанию
    

Трассировщик для Cortex M ядер

On 11/30/2022 at 8:02 PM, jcxz said:

Советую всё же почитать

Неее, чтобы меня заинтересовать - нужен мешок плюшек.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Итак, я успел просмотреть десяток роликов про трассировку с участием реального МК. Рекламных и обучающих роликов ещё больше, но если там нет доски - то ролик пропускается.

Дык вот, каждый ролик демонстрирует как могло-бы работать, но не работает, потому что у нас нет отладчика за тысячу баксов. А те возможности что демонстрируется - доступны для меня на древней версии embitz, и относительно свежем stlink3.

Чего я хочу увидеть - отмотку буфера операций ядра назад от точки сбоя. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 минуты назад, AVI-crak сказал:

Чего я хочу увидеть - отмотку буфера операций ядра назад от точки сбоя. 

Так купите самую дешёвую отладку на LPC43xx и смотрите сколько пожелаете. Лучше один раз пощупать своими руками, чем 100 роликов в инете посмотреть.

Помнится в 2015-м я OM13054 всего за каких-то 2411 руб за тушку покупал.   :boast:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 hours ago, jcxz said:

ETB выполняет трассировку именно в реальном времени. Только наружу выдаёт не в реальном, через бутылочное горлышко. Советую всё же почитать мануал.

не очень хочу спорить, но какое-то противоречие - трассировка в реальном, а выдача в нереальном....

так можно сказать, что когда пошагово отладчиком ходите по коду - то шаг выполняется в реальном, а потом уже в нереальном все остальное.

ну и про компрессию трейсов - но это же очевидно и в АРМовских ETB применяется - куда он (РС=РС+1) денется то? естественно, что эксепшины интерапты и вякое такое это тоже нарушения линейного исполнения

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, yes сказал:

не очень хочу спорить, но какое-то противоречие - трассировка в реальном, а выдача в нереальном....

В чём противоречие? Пишет в ETB в реальном времени. Но не выдаёт все время наружу содержимое буфера.

1 час назад, yes сказал:

так можно сказать, что когда пошагово отладчиком ходите по коду - то шаг выполняется в реальном, а потом уже в нереальном все остальное.

Совсем не о том говорите. Вы похоже не понимаете как работает трэйсер и зачем он.  :unknw:

1 час назад, yes сказал:

ну и про компрессию трейсов - но это же очевидно и в АРМовских ETB применяется - куда он (РС=РС+1) денется то? естественно, что эксепшины интерапты и вякое такое это тоже нарушения линейного исполнения

Что "очевидно"? Вы о чём? Зачем какие-то "компрессии"??? :wacko2:  Процессор выполняет команды, выбирая их из памяти. В чём проблема ему точно также в другую память их и сохранить?? В память, организованную в виде кольцевого буфера. ОЗУ работает на частоте ядра, поэтому она способна сохранить весь поток выполняемых процессором команд. Никакие сжатия не нужны для этого.

 

PS: Непонимающим советую купить платку типа OM13054 и увидеть как это всё работает на практике. А не фантазировать не пойми чего.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, jcxz said:

В чём противоречие? Пишет в ETB в реальном времени. Но не выдаёт все время наружу содержимое буфера.

совсем простой вопрос - а что происходит с реалтаймовостью когда буфер заканчивается?

--------------

из общедоступного видел риалтаймовую отладку в TMS6000, был у них некий меанизьм. и тут как ни крути, принципиально реалтайм отладку иначе не сделаешь.

---------------

я не отрицаю полезность ETB и подобного - это хороший механизм отладки coredump-a (для ленивых), но реалтаймовость там и рядом не стояла/лежала. 

вам нужно либо правильно называть, либо разобраться, что к чему

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, yes сказал:

совсем простой вопрос - а что происходит с реалтаймовостью когда буфер заканчивается?

Кольцевой буфер никогда не заканчивается. Почитайте что это такое.

6 минут назад, yes сказал:

вам нужно либо правильно называть, либо разобраться, что к чему

Вот именно! Разберитесь уже наконец-то, что такое кольцевой буфер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 minutes ago, jcxz said:

Кольцевой буфер никогда не заканчивается. Почитайте что это такое.

Вот именно! Разберитесь уже наконец-то, что такое кольцевой буфер.

вот кстати с сегера

https://wiki.segger.com/General_information_about_tracing

are able to stream out compressed core instruction information so a data stream of executed instructions can be reconstructed. 

--------------

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

что такое риалтайм? по вашему.

и является ли буфер для пошаговой отладки кольцевым (с 1 элементом)?

-------------

upd: ну и почему сжимают поток инструкций в этом буфере?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

43 минуты назад, yes сказал:

are able to stream out compressed core instruction information so a data stream of executed instructions can be reconstructed. 

И что такое "compressed" здесь по-вашему? Вы уверены, что правильно поняли смысл написанного?

И что Вы понимаете под своим "сжатием"?

Имхо авторы той фразы под "compressed" имели в виду просто оптимальное сохранение данных в ОЗУ. Если инструкция 32-битная - сохранять её как 32-битное данное, если 16-битная - как 16-битное. И возможно добавлять ещё несколько каких-нить бит к ним. И полученный в результате сохраняемый N-битный вектор данных (переменной длины) они и называют "compressed data".

Надеюсь Вас не удивляет что инструкции в Thumb-2 тоже хранятся в compressed-формате (в отличие от классических ARM)? И CPU как-то на лету умудряется их распаковывать и выполнять.

43 минуты назад, yes сказал:

upd: ну и почему сжимают поток инструкций в этом буфере?

Что такое "сжимают" в вашей терминологии? Поясните. Думаете там работает что-то типа RAR-архиватора?  :biggrin:

 

PS: Советую прочитать вами же выложенную ссылку. Тогда увидите там следующее:

Arm MTB/ETB/ETF/TMC
The MTB (Micro Trace Buffer) was first introduced with Cortex-M0+ cores and enabled complete instruction trace for Cortex-M cores. This has been expanded with the newer ETB (Embedded Trace Buffer) and the latest ETF (Embedded Trace FIFO) which is part of the TMC (Trace Memory Controller).

All three versions are essentially designated memory areas in RAM (sometimes dedicated, sometimes shared) where the instruction trace data gets dumped into from the ETM (Embedded Trace Macrocell). That way you will get a complete trace stream of the last couple of instructions that will fit into that RAM area (usually only 4-8 KiB in size). The memory gets overwritten in FIFO fashion which enables you to have the latest instructions stored.

A big plus of this technique is that you don't need any hardware pins at all and that you get a full trace coverage of the latest instruction trace that fit into RAM. Also this technique is completely non-intrusive. The drawback is that you only get the latest instruction trace that fit into RAM which limits the actual time which can be analyzed backwards.

Это как раз то, о чём я и писал про работу ETB.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/1/2022 at 4:55 PM, jcxz said:

Непонимающим советую купить платку типа OM13054 и увидеть как это всё работает на практике.

Даже арбузы перед покупкой проверяют десятками способов. А тут ноль роликов на ютюбе с размоткой потока команд в обратную строну.

Я реально хочу это увидеть, и не верю что на это способна отладка без полноценной трассировки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 hours ago, AVI-crak said:

Даже арбузы перед покупкой проверяют десятками способов. А тут ноль роликов на ютюбе с размоткой потока команд в обратную строну.

Я реально хочу это увидеть, и не верю что на это способна отладка без полноценной трассировки.

размотки нет, записаны команды начиная от текущей (i-той), потом (i-1), (i-2) ... (i-количество пакетов в памяти).

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

-------

также кроме команд, туда могут добавляться данные, например в стандартных риск инструкциях rd, rs1, rs2 могут записывать rd. ну еще там всякие флаги, эксепшины и т.п.

в хитрых системах (типа армовских ETM/ETB/PTM и т.п.) пишут не все подряд, а только то, что необходимо, чтобы восстановить поток. например регистровые (индерект) переходы, то есть j Rx, jal Rx и т.п. - когда непонятно из кода адрес. понятно, например, что безусловный branch - b #constant писать не надо, так как и так понятно, где окажется PC, точно так же не надо писать последовательность инструкций. там обычно очень сложная система всяких фильтров, выборов форматов записи и т.п.

смысл в том, чтобы для ETM|PTM (у которых нет памяти) снизить требуемую полосу канала, и то там используются специальные разъемы, в дополнение к JTAG/SWD, а для ETB запихнуть большую длину трейса в его маленькую память 

18 hours ago, jcxz said:

И что такое "compressed" здесь по-вашему? Вы уверены, что правильно поняли смысл написанного?

 

выше объяснил, больше не хочу этот душный разговор поддерживать - считайте как вам удобнее

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/2/2022 at 2:02 PM, yes said:

размотки нет, записаны команды начиная от текущей (i-той), потом (i-1), (i-2) ... (i-количество пакетов в памяти).

Ну хорошо, а почему на ютюбе ноль роликов с демонстрацией сего действа. Насколько я понимаю - это не сложно, и даже не требуется реальная программная ошибка, достаточно нажать "стоп". 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/2/2022 at 8:19 PM, yes said:

я просто набрал - keil trace

Не ожидал увидеть в таком виде, походу не то искал. Я-то думал там будет натурально последние 16 команд на асме, а там вообще всё. Прикольно, одобряем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...