Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Кто вызвал функцию.
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Jenya7
Работаю с 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); никогда не выполняется.
Вопрос такой - можно узнать кто вызвал эту функцию?
megajohn
смотреть Call Stack
а что это, читать ДШ на среду разработки

пример
aaarrr
Цитата(megajohn @ Sep 29 2015, 13:45) *
смотреть Call Stack

Даже проще: руками поставить PC после while().
Jenya7
Цитата(megajohn @ Sep 29 2015, 15:45) *
смотреть Call Stack
а что это, читать ДШ на среду разработки

пример

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

Цитата(aaarrr @ Sep 29 2015, 15:58) *
Даже проще: руками поставить PC после while().

это как?
aaarrr
Цитата(Jenya7 @ Sep 29 2015, 14:06) *
это как?

Что-нибудь вроде: "правая кнопка"->Set PC to cursor
Jenya7
Цитата(aaarrr @ Sep 29 2015, 16:14) *
Что-нибудь вроде: "правая кнопка"->Set PC to cursor


не нашел, там есть Open Call Hierarchy но не работает.
jcxz
Цитата(Jenya7 @ Sep 29 2015, 16:36) *
Вопрос такой - можно узнать кто вызвал эту функцию?

Так как в Delay_us() нет вызовов других функций, то скорей всего stack не нужен, достаточно посмотреть LR. Но точно можно сказать только по дизасму.
Jenya7
Цитата(jcxz @ Sep 29 2015, 16:23) *
Так как в Delay_us() нет вызовов других функций, то скорей всего stack не нужен, достаточно посмотреть LR. Но точно можно сказать только по дизасму.

а что такое LR?
aaarrr
Цитата(Jenya7 @ Sep 29 2015, 14:29) *
а что такое LR?

Link Register (R14), в него заносится адрес возврата при выполнении вызова командой BL (Branch and Link).
megajohn
Цитата(Jenya7 @ Sep 29 2015, 14:06) *
не нашел в 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
Jenya7
Цитата(megajohn @ Sep 29 2015, 16:37) *
ну это не удивительно

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 есть иерархия. видно кто кого позвал. спасибо.
megajohn
Цитата(Jenya7 @ Sep 29 2015, 13:36) *
Что странно остаюсь в этой функции. Условие while (DWT->CYCCNT < ticks); никогда не выполняется.


не хватает
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;

johnshadow
Цитата(megajohn @ Sep 29 2015, 16:35) *
не хватает
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;


+1

Также иногда ST-Link2 что-то конкретно портит в lpc17xx, что DWT таймер не запускается вообще.
Не помогает ни soft-reset, ни hardware-reset. Только отключение питания с проца. J-Link и CoLink в подобном не замечены.
megajohn
Цитата(johnshadow @ Sep 29 2015, 17:07) *
+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.
Jenya7
Цитата(megajohn @ Sep 29 2015, 19:35) *
не хватает
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;

у меня эта строчка вызывается один раз при конфигурации периферии.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.