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

 
 
> STM32F103+USB Keil ST-Link отладка
igorle
сообщение Oct 28 2013, 20:05
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 338
Регистрация: 14-07-12
Пользователь №: 72 753



Есть проект, основанный на ST MassStorage примере. Кроме того, добавлен мой код для работы с UART.

Иногда работает без проблем, иногда на старте умирает. Причем умирает так, что дебагером уже не подключиться. Проблема явно в коде, связанном с USB. Если идем по шагам в дебагере - все работает. Как только убираю все брек поинты и продолжаю бежать код - то одно из двух. Или все работает долго и счастливо. Или затыкается совершенно. Так что отладчик в Кейле выдает ошибку "Cannot access target. Shutting down debugging session" После того подключиться можно только после сброса питания процессора. Похоже, что проблема возникает, если мое устройство не обработало вовремя какой-то пакет от USB хоста.

Кто-то может посоветовать - как узнать, что случилось перед смертью?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
igorle
сообщение Oct 29 2013, 12:47
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 338
Регистрация: 14-07-12
Пользователь №: 72 753



Нет никакой ОС. Есть пример MassStorage, где весь код работает в прерывании.
Есть SD card, для которого реализованы синхронные запись и чтение блока
Есть UART - в интеррапте берутся полученные байты и складываются в буфер
И есть цикл, который смотрит - не пришло ли что-то из UARTа, и если пришло - то обрабатывает. Когда накопится достаточно информации - записывает данные на карту, используя FatFS

Затык происходит во время инициализации USB. Похоже, что если устройство замешкается и не обработает вовремя пакет от хоста - то происходит сбой. А точнее поймать ничего не могу. sad.gif
Go to the top of the page
 
+Quote Post
toweroff
сообщение Oct 29 2013, 12:55
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(igorle @ Oct 29 2013, 16:47) *
А точнее поймать ничего не могу. sad.gif

ну так процессор-то все равно должен где-то вертеться??
напишите заглушки для exception, примерно такие:

Код
volatile unsigned int abort_address;

void CheckUndefined(void)
{
    abort_address = __return_address();
    while(1);    
}

void CheckSWI(void)
{
    abort_address = __return_address();
    while(1);    
}

void CheckAbort(void)
{
    abort_address = __return_address();
    while(1);    
}

void CheckPrefetch(void)
{
    abort_address = __return_address();
    while(1);    
}

void CheckReserved(void)
{
    abort_address = __return_address();
    while(1);    
}


ну и в стартапе их прописать

запуститься из-под отладчика и ждать сбоя sm.gif
как раз будет понятно, какое исключение случилось и откуда оно случилось
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 9th August 2025 - 08:09
Рейтинг@Mail.ru


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