Jump to content

    

Tracealyzer для FreeRTOS

5 часов назад, Andrey75 сказал:

При запуске анализатора выбирается частота. Я пробовал делать 12 мгц. Работало но иногда висло. Если ставить больще то вообще не рабоатет.

Не важно какая частота там выбирается, важно какая реально устанавливается. А она может быть меньше выставляемой. Какая реально выставляется: нужно нажать на зелёную иконку "J-Link Vx.xxx Control Panel" в трее винды, и там, на главной вкладке, есть значение "Actual" - это и есть текущая частота.

Share this post


Link to post
Share on other sites

По поводу 8 МГц я ошибался. Китайский V8 дает 4 МГц, V9 - 6 МГц

Share this post


Link to post
Share on other sites

можно же просто в J-Link Commander набрать команду SWOSpeed 

там видно будет максимальную скорость SWO

Share this post


Link to post
Share on other sites
4 часа назад, UniSoft сказал:

можно же просто в J-Link Commander набрать команду SWOSpeed 

там видно будет максимальную скорость SWO

А можно просто в том же "J-Link Vx.xxx Control Panel" из трея щёлкнуть вкладку "SWV" и увидеть список поддерживаемых скоростей. Мой J-Link Ultra там рапортует:

Supported speeds: 3200000 kHz/n, (n>=64). => 50000kHz, 49230kHz, 48484kHz, 47761kHz, ...

Share this post


Link to post
Share on other sites

Отчитываюсь.

Пришёл мне JLink PRO. Пробовал его и по юсб и по изернету. Частоту SWD поднял до 40мгц. Выше не получилось. Надо провода укорачивать скорее всего. Пропуски стали заметно реже, Но всё равно они есть и их много. Попоробую понизить частоту процессора.

Share this post


Link to post
Share on other sites
23 hours ago, Andrey75 said:

Пропуски стали заметно реже, Но всё равно они есть и их много. Попоробую понизить частоту процессора.

может у вас проблема совсем в другом,

может просто как-то не так данные в ITM отсылаете? ну скажем нет проверки на завершение предыдущей передачи...

должно быть как-то так:

/* ITM registers */
#define ITM_PORT0_U8          (*((volatile uint8_t  *)0xE0000000))
#define ITM_PORT0_U32         (*((volatile uint32_t *)0xE0000000))
#define ITM_TER               (*((volatile uint32_t *)0xE0000E00))
#define ITM_TCR               (*((volatile uint32_t *)0xE0000E80))
  
#define ITM_TCR_ITMENA_Msk    (1UL << 0)

int32_t ITM_SendChar (int32_t ch) {
  if ((ITM_TCR & ITM_TCR_ITMENA_Msk) && /* ITM enabled */
      (ITM_TER & (1UL << 0)        )) { /* ITM Port #0 enabled */
    while (ITM_PORT0_U32 == 0); /* wait for end of transmit previous character */
    ITM_PORT0_U8 = (uint8_t)ch;
  }
  return (ch);
}

 

Share this post


Link to post
Share on other sites

Я может не совсем понимаю.

Если вы о  RTT то у меня его фактически нет. Одно сообщение в сотню милисекунд. Использую стандартные комнады SEGGER_RTT_printf. Я запускаю программу под отладкой или без, и запускаю Traceanalyzer. Он сам через Jlink подключается и начинает записывать данные. В коде я только прописал его либу и иницализировал её и пропатчил FreeRTOS как это указано в мануале.

Share this post


Link to post
Share on other sites
55 minutes ago, Andrey75 said:

Если вы о  RTT то у меня его фактически нет. Одно сообщение в сотню милисекунд. Использую стандартные комнады SEGGER_RTT_printf. Я запускаю программу под отладкой или без, и запускаю Traceanalyzer. Он сам через Jlink подключается и начинает записывать данные. В коде я только прописал его либу и иницализировал её и пропатчил FreeRTOS как это указано в мануале.

RTT как раз у всех есть (SEGGER_RTT_printf())

это по сути обычный кольцевой буфер, который с некоторой периодичностью вычищается отладчиком.

Я то думал там ITM используется, а нет (не пользуюсь FreeRTOS, я на RTX5).

Заглянул в исходники (SEGGER_RTT_Conf.h), ну и как и предполагал

#define SEGGER_RTT_MODE_DEFAULT   SEGGER_RTT_MODE_NO_BLOCK_SKIP // Mode for pre-initialized terminal channel (buffer 0)

стоит не блокирующий режим. В этом режиме, если не достаточно места в буфере под сообщение целиком, то оно просто игнорируется.

есть еще такие режимы

SEGGER_RTT_MODE_NO_BLOCK_TRIM - просто обрезается все что не влазит.

SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL - ждем освобождение буфера.

попробуйте, может поможет.

#define SEGGER_RTT_MODE_DEFAULT  SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL

 

Share this post


Link to post
Share on other sites

Версия 4.2.12...

поддерживает следующие RTOS:

  • FreeRTOS
  • SafeRTOS
  • Keil RTX5
  • Micrium µC/OS-III
  • On Time RTOS-32
  • OpenVX/Synopsys
  • VxWorks
  • ThreadX

Взять можно пройдя по той-же ссылке (на rgho.st), в описании ссылка на 4.2.12 

(ну или в ПМ, либо на email)

Share this post


Link to post
Share on other sites

Спасибо Unisoft  в очередной раз!!!! Забрал по ссылке выше объект T .  У меня FireFox не хотел читать сайт rgho.st .Нужно поставить расширение (в настройках)    называется  browsec .

Сначала написал запрос  в личку но теперь  разобрался так что спс.

Share this post


Link to post
Share on other sites

Версия 4.3.2...

Взять можно пройдя по той-же ссылке (на rgho.st), в описании ссылка на 4.3.2 

(ну или в ПМ, либо на email)

Share this post


Link to post
Share on other sites

Версия 4.3.4...

Взять можно пройдя по той-же ссылке (на rgho.st), в описании ссылка на 4.3.4

(ну или в ПМ, либо на email)

Share this post


Link to post
Share on other sites
On 6/13/2019 at 7:34 PM, UniSoft said:

Версия 4.3.4...

Взять можно пройдя по той-же ссылке (на rgho.st), в описании ссылка на 4.3.4

(ну или в ПМ, либо на email)

Добрый день !! Немогу скачать по ссылке написано файл недоступен . Написал в личку подробности.

Share this post


Link to post
Share on other sites

А кто может поделиться этой штукой? Боюсь месяца мне может не хватить, чтоб полностью всё хорошенько перепробовать. Ссылка не работает.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now