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

Кто вызвал функцию.

Работаю с Cortex-M3. Запускаю программу в отладчике (J-Link+AttolicTrueStudio).

Программа улетает куда то. Ставлю паузу, нахожу себя в функции задержки.

void Delay_us(uint32_t us)
{
    uint32_t ticks = 20 * us;
    DWT->CYCCNT = 0;
    DWT->CTRL = 1;
    while (DWT->CYCCNT < ticks);
    DWT->CTRL = 0;
}

Что странно остаюсь в этой функции. Условие while (DWT->CYCCNT < ticks); никогда не выполняется.

Вопрос такой - можно узнать кто вызвал эту функцию?

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


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

смотреть Call Stack

а что это, читать ДШ на среду разработки

 

пример

7506.Capture2.PNG

не нашел в Attolic Call Stack.

 

Даже проще: руками поставить PC после while().

это как?

 

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


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

Что-нибудь вроде: "правая кнопка"->Set PC to cursor

 

не нашел, там есть Open Call Hierarchy но не работает.

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


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

Вопрос такой - можно узнать кто вызвал эту функцию?

Так как в Delay_us() нет вызовов других функций, то скорей всего stack не нужен, достаточно посмотреть LR. Но точно можно сказать только по дизасму.

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


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

Так как в Delay_us() нет вызовов других функций, то скорей всего stack не нужен, достаточно посмотреть LR. Но точно можно сказать только по дизасму.

а что такое LR?

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


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

а что такое LR?

Link Register (R14), в него заносится адрес возврата при выполнении вызова командой BL (Branch and Link).

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


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

не нашел в Attolic Call Stack.

 

ну это не удивительно

 

http://www.atollic.com/index.php/truestudio/debugging

третья картинка

 

или тут

http://m.eet.com/media/1169580/atollic%20d...ower%20qual.jpg

окно "Debug" слева-вверху. Функция pvCopyData вызвала memcpy

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


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

ну это не удивительно

 

http://www.atollic.com/index.php/truestudio/debugging

третья картинка

 

или тут

http://m.eet.com/media/1169580/atollic%20d...ower%20qual.jpg

окно "Debug" слева-вверху. Функция pvCopyData вызвала memcpy

 

эээ...что то я туплю.

но я нашел регистры

LR = 12087

PC = 0xfae <Delay_us+14>

 

 

ааа...понял. там в thread есть иерархия. видно кто кого позвал. спасибо.

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


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

Что странно остаюсь в этой функции. Условие while (DWT->CYCCNT < ticks); никогда не выполняется.

 

не хватает

CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;

 

 

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


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

не хватает

CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;

 

+1

 

Также иногда ST-Link2 что-то конкретно портит в lpc17xx, что DWT таймер не запускается вообще.

Не помогает ни soft-reset, ни hardware-reset. Только отключение питания с проца. J-Link и CoLink в подобном не замечены.

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


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

+1

 

Также иногда ST-Link2 что-то конкретно портит в lpc17xx, что DWT таймер не запускается вообще.

Не помогает ни soft-reset, ни hardware-reset. Только отключение питания с проца. J-Link и CoLink в подобном не замечены.

 

The DWT is an optional debug unit that provides watchpoints, data tracing, and system profiling for the processor.

 

A full DWT contains four comparators that you can configure as

a hardware watchpoint

an ETM trigger

a PC sampler event trigger

a data address sampler event trigger.

 

The DWT provides periodic requests for protocol synchronization to the ITM and the TPIU, if the your implementation includes the Cortex-M3 TPIU.

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


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

не хватает

CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;

у меня эта строчка вызывается один раз при конфигурации периферии.

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


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

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

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

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

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

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

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

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

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

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