реклама на сайте
подробности

 
 
> stm32f4discovery виснет раз в неделю
сарматъ
сообщение Sep 10 2013, 11:28
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



добрый день собственно макетка зависает раз в неделю да так что кнопочка ресет не помогает, как думаете в чем может быть проблема?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
сарматъ
сообщение Oct 1 2013, 09:19
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



наваял код на asm для обработчика __attribute__((noreturn, naked)) void Default_Handler(void) проверил его работоспособность эмулируя в программе сбой стека вот таким вот образом
Код
    asm volatile (
                "LDR R1,=0x08008000        \n"
                "MSR MSP, R1            \n"
            :
            :
            :
            );

в терминале любуюсь на
Код
SP_0x20003858 MSP_0x08008000 PSP_0x20003858 LR_0xFFFFFFFF PC_0x08002660        
CF_0x00040000 HF_0x00000000 DF_0x0000000A AF_0x00000000                        
MA_0xE000ED34 BA_0xE000ED38

убираю из программы эмуляцию сбоя, запускаю в работу, 4-ро суток макетка пашет как положено, на пятые сутки зависает, в терминале - тишина, как будто макетка просто в обморок упала и не дышит...

есть какие то предположения?

Сообщение отредактировал IgorKossak - Oct 1 2013, 18:57
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 1 2013, 11:57
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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

У вас программа с ОС? Вставьте в idle task махание ногой. Возможно это не зависание, а взаимная блокировка (deadlock) и ваша программа продолжает крутиться в idle task пока остальные процессы ждут заблокированные друг другом ресурсы. И в этом случае отладчик поможет найти кто кого и откуда заблокировал, без него будет трудно.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
сарматъ
сообщение Oct 1 2013, 12:22
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



CODE
/*
* main.c
*
* Created on: 01 окт. 2013 г.
* Author: jura
*/


#include <stm32f4xx.h>

GPIO_InitTypeDef GPIO_InitStructure;

void Delay(__IO uint32_t nCount)
{
while(nCount--)
{
}
}



int main(void)
{


/* включаем тактирование порта D */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);

/* конфигурируем выводы PD12, PD13, PD14 и PD15 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_Init(GPIOD, &GPIO_InitStructure);

while (1)
{
/* зажигаем зеленый (PD12) */
GPIO_SetBits(GPIOD, GPIO_Pin_12);

/* Задержка */
Delay(0x3FFFFF);

/* зажигаем оранжевый (PD13) */
GPIO_SetBits(GPIOD, GPIO_Pin_13);

/* Задержка */
Delay(0x3FFFFF);

/* зажигаем красный (PD14) */
GPIO_SetBits(GPIOD, GPIO_Pin_14);

/* Задержка */
Delay(0x3FFFFF);

/* зажигаем синий (PD15) */
GPIO_SetBits(GPIOD, GPIO_Pin_15);

/* Задержка */
Delay(0x7FFFFF);

/* сбрасываем все 4-ре */
GPIO_ResetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);

/* Задержка */
Delay(0xFFFFFF);
}
}


залил вот, это любуюсь как моргают светодиодики, курю бамбук...

Цитата(Сергей Борщ @ Oct 1 2013, 15:57) *
Подключиться отладчиком "на лету" во время такого зависания и посмотреть, куда ее занесло. Предварительно потренировавшись подключаться к независшей плате.
Возможно проблемы со стеком не дают работать вашему обработчику.

У вас программа с ОС? Вставьте в idle task махание ногой. Возможно это не зависание, а взаимная блокировка (deadlock) и ваша программа продолжает крутиться в idle task пока остальные процессы ждут заблокированные друг другом ресурсы. И в этом случае отладчик поможет найти кто кого и откуда заблокировал, без него будет трудно.


а как подключаться к независшей? это без эклипса?

да программка с smcrtos

вообще у меня в паралельной задачке просто моргает светодиод никого не ожидая вот так вот
CODE
OS_PROCESS void TProc4::exec()
{//init_stack_frame();
for(;;)
{
for(;;)
{res_table.uregs[104]=Proc4.stack_slack();
GreenLED::On();
sleep(50);
GreenLED::Off();
sleep(950);
;
}
}
}


соотв когда зависает светодиод не моргает


про подключение на лету: это телнетом на openocd наехать и все регистры и память можно просмотреть? круто...
а я себе голову морочил с обработчиками и уартом

Сергей, вопрос: а можно как то не телнетом а сразу эклипсом цепляться к работающей плате?
там какие то заклинания должны стоять на вкладочке железной отладки?

Сообщение отредактировал сарматъ - Oct 1 2013, 13:40
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 1 2013, 21:10
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (сарматъ @ Oct 1 2013, 14:22) *
Сергей, вопрос: а можно как то не телнетом а сразу эклипсом цепляться к работающей плате?
там какие то заклинания должны стоять на вкладочке железной отладки?
Да, можно. Но нужно исправить две ошибки в openocd и пересобрать его. В эклипсе на вкладке отладчика "Startup" снять галочки "Reset and Delay", Load Image, можно также снять "Halt". Из скрипта openocd (если таковой используете) убрать команду сброса и команды настройки линии сброса, если они там есть. Для надежности отключить линию сброса от отладчика к плате (я ее вообще не испольщую).

Вот исправления в openocd:
CODE
diff --git a/src/jtag/hla/hla_interface.c b/src/jtag/hla/hla_interface.c
index 0176a48..99d0229 100644
--- a/src/jtag/hla/hla_interface.c
+++ b/src/jtag/hla/hla_interface.c
@@ -137,6 +137,11 @@ int hl_interface_init_reset(void)
jtag_add_reset(0, 1);
hl_if.layout->api->assert_srst(hl_if.fd, 0);
}
+ else
+ {
+ jtag_add_reset(0, 0);
+ hl_if.layout->api->assert_srst(hl_if.fd, 1);
+ }

return ERROR_OK;
}
diff --git a/src/target/hla_target.c b/src/target/hla_target.c
index a65ba80..cd7a127 100644
--- a/src/target/hla_target.c
+++ b/src/target/hla_target.c
@@ -484,6 +484,8 @@ static int adapter_poll(struct target *target)

LOG_DEBUG("halted: PC: 0x%08x", buf_get_u32(armv7m->arm.pc->value, 0, 32));
}
+ else
+ target->state = state;

return ERROR_OK;
}
По прводу первого исправления я не уверен, что его надо вносить именно сюда, еще не разобрался в исходниках. Тут он исправляет только stlink(-v2), а вот как обстоят дела у других отладчиков я не в курсе. Возможно надо jtag_add_reset() вставить в такое место, чтобы оно вызывалось для любого отладчика. Собираюсь попросить совета по этому поводу в списке рассылки, да времени нет сесть и написать туда длинное письмо с объяснением. Если кому-то интересно, объясню смысл этих правок здесь.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- сарматъ   stm32f4discovery виснет раз в неделю   Sep 10 2013, 11:28
- - Lotor   С такой постановкой вопроса ждите экстрасенсов. В ...   Sep 10 2013, 12:10
- - сарматъ   что, зависания такие что ресетом не поднять - обыч...   Sep 10 2013, 12:46
- - kolobok0   Цитата(сарматъ @ Sep 10 2013, 15:28) ..со...   Sep 10 2013, 13:49
- - сарматъ   да видимо придется вторую макетку собирать чтоб ее...   Sep 10 2013, 13:55
|- - adnega   Цитата(сарматъ @ Sep 10 2013, 17:55) да в...   Sep 10 2013, 14:05
- - сарматъ   да снимаю питание и подключаю заново   Sep 10 2013, 14:11
|- - adnega   Цитата(сарматъ @ Sep 10 2013, 18:11) да с...   Sep 10 2013, 14:25
- - сарматъ   относительно повторяемости два раза я откладывал р...   Sep 10 2013, 14:45
|- - adnega   Цитата(сарматъ @ Sep 10 2013, 18:45) отно...   Sep 10 2013, 16:45
|- - сарматъ   Цитата(adnega @ Sep 10 2013, 20:45) Обрат...   Sep 17 2013, 04:41
|- - adnega   Цитата(сарматъ @ Sep 17 2013, 08:41) а чт...   Sep 17 2013, 06:16
- - AHTOXA   Цитата(сарматъ @ Sep 10 2013, 17:28) добр...   Sep 10 2013, 18:21
- - сарматъ   аднега, спасибо буду думать, посмотрел сейчас на п...   Sep 10 2013, 18:24
|- - KnightIgor   Цитата(сарматъ @ Sep 10 2013, 19:24) адне...   Sep 11 2013, 20:07
- - hd44780   Читал-читал, так и не нашёл, от чего питается плат...   Sep 12 2013, 08:07
- - сарматъ   "питание по юсби по которому произвожу отладк...   Sep 12 2013, 09:42
- - сарматъ   в очередной раз упал зверек, но поднялся от ресета...   Sep 16 2013, 18:33
|- - vlad_new   Цитата(сарматъ @ Sep 16 2013, 22:33) в оч...   Sep 16 2013, 22:30
- - Golikov A.   протоколирование только. попадая в секцию кидает ...   Sep 16 2013, 19:26
- - DASM   Да, тут только лог.Лучше по юарт и очень простой, ...   Sep 17 2013, 04:05
- - сарматъ   пока платка тестится собрал вторую макетку подключ...   Sep 18 2013, 11:30
|- - adnega   Цитата(сарматъ @ Sep 18 2013, 15:30) кто ...   Sep 18 2013, 12:06
- - сарматъ   да tcpdump говорит что они имеют одинаковый мак 32...   Sep 18 2013, 12:29
- - Golikov A.   может быть еще путаница с кешем арп запросов. а е...   Sep 18 2013, 13:06
- - сарматъ   широковещательный вроде только всеединички?   Sep 18 2013, 13:08
- - Golikov A.   нет там вроде 1 в старшем бите старшего байта, или...   Sep 18 2013, 13:11
- - сарматъ   а механизмом xFSR регистров кто нибудь пользовался...   Sep 24 2013, 08:49
- - mad_mouse   посмотрите переполнение каких либо переменных. есл...   Sep 24 2013, 11:29
- - сарматъ   все что ни делал не помогло все равно виснет, буду...   Sep 24 2013, 18:28
|- - adnega   Попробуйте printf ("aaa\r\n");   Sep 24 2013, 19:07
- - сарматъ   о, спасибо, заработало а вы с xFSR не сталкивалис...   Sep 24 2013, 19:13
|- - adnega   Цитата(сарматъ @ Sep 24 2013, 23:13) если...   Sep 24 2013, 21:20
- - сарматъ   да как раз оттуда эти регистры откопал   Sep 24 2013, 21:26
|- - adnega   Цитата(сарматъ @ Sep 25 2013, 01:26) да к...   Sep 24 2013, 21:36
- - сарматъ   мне хотя бы место и причину найти для начала а ст...   Sep 25 2013, 05:46
- - Golikov A.   думаю 95% случаев - переполнение. остальное это об...   Sep 25 2013, 05:51
- - сарматъ   а ведь если стек рухнул printf работать не будет в...   Sep 25 2013, 10:09
- - Golikov A.   принтф - это вообще жесткая функция, она же с деко...   Sep 25 2013, 10:19
- - сарматъ   да наверное переделаю на просто уарт а кстати поче...   Sep 25 2013, 10:40
|- - Сергей Борщ   QUOTE (сарматъ @ Sep 25 2013, 12:40) разв...   Sep 25 2013, 12:08
- - сарматъ   что то мне казалось что я видел обращение к регист...   Sep 25 2013, 12:58
- - Golikov A.   в лпц есть макросы обращения к регистрам, думаю в ...   Sep 25 2013, 13:31
- - сарматъ   счетчик в стеке спрятан по адресу sp-24 а лпц это ...   Sep 25 2013, 13:33
|- - mdmitry   Цитата(сарматъ @ Sep 25 2013, 17:33) а лп...   Sep 25 2013, 15:32
|- - Golikov A.   Цитата(mdmitry @ Sep 25 2013, 19:32) LPC ...   Sep 25 2013, 17:30
|- - сарматъ   можно ли делать инлайн вставками вот так CODEvoid...   Sep 26 2013, 08:05
|- - Сергей Борщ   QUOTE (сарматъ @ Sep 26 2013, 10:05) можн...   Sep 26 2013, 09:51
|- - demiurg_spb   Цитата(Сергей Борщ @ Sep 26 2013, 13:51) ...   Oct 18 2013, 11:25
|- - Сергей Борщ   QUOTE (demiurg_spb @ Oct 18 2013, 14:25) ...   Oct 18 2013, 13:41
- - Сергей Борщ   QUOTE (сарматъ @ Sep 25 2013, 14:58) а PS...   Sep 25 2013, 16:08
- - сарматъ   ясно то есть надо в самом начале обработчика сохр...   Sep 25 2013, 16:36
- - сарматъ   спасибо буду пробовать   Sep 26 2013, 09:53
|- - AHTOXA   Цитата(сарматъ @ Oct 1 2013, 15:19) есть ...   Oct 1 2013, 09:50
- - vlad_new   Быпа у кого то подобная проблемма. Оказалось, что ...   Oct 1 2013, 18:39
- - A. Fig Lee   Можно в бесплатном IAR цеплятся JLinkом. Там и опц...   Oct 1 2013, 20:54
- - сарматъ   спасибо, сегодня попробую пересобрать, как раз нов...   Oct 2 2013, 06:30
- - сарматъ   пропатчил, собрал, единственное конфигурировал так...   Oct 2 2013, 18:41
|- - Сергей Борщ   QUOTE (сарматъ @ Oct 2 2013, 20:41) вроде...   Oct 2 2013, 19:47
- - сарматъ   да я завтра на вторую платку просто со светодиодам...   Oct 2 2013, 19:52
|- - demiurg_spb   Цитата(сарматъ @ Oct 2 2013, 23:52) Код a...   Oct 18 2013, 12:32
|- - ig_z   Я использую такой обработчик Hard_Fault_Handler дл...   Oct 18 2013, 13:41
- - сарматъ   почти неделю работает без зависаний возможно что ...   Oct 10 2013, 05:40
|- - adnega   Цитата(сарматъ @ Oct 10 2013, 09:40) 2. к...   Oct 10 2013, 07:07
|- - сарматъ   Цитата(adnega @ Oct 10 2013, 11:07) главн...   Oct 11 2013, 05:09
- - Flexz   Цитата(сарматъ @ Oct 10 2013, 09:40) возм...   Oct 10 2013, 08:01
- - сарматъ   платка опять повисла, точнее теперь уже ясно что п...   Oct 18 2013, 08:55
- - Сергей Борщ   QUOTE (сарматъ @ Oct 18 2013, 11:55) 2 ме...   Oct 18 2013, 09:46


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 14:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.01479 секунд с 7
ELECTRONIX ©2004-2016