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

 
 
> Конфликт RAM и SPI
zheka
сообщение Jan 19 2017, 06:43
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Господа, я понимаю, что причину моей проблемы вы не найдете, но может быть подскажете, как искать ошибку.
А может быть и констатируете, что это не ошибка, а глюк отладчика...

Суть такова. Контроллер STM32F103, в нем включен USART. В обработчике прерывания по приему заполняется буфер, объявленный как uint8_t rx_buffer[50]; Буфер кольцевой.
Работаю с KEIL. Отлаживаю по SWD, в окно watch я добавил rx_buffer. Проблема в чем - в эту переменную, согласно уведомлениям отладчика, периодически в случайные позиции на мгновение вместо 0x00 записывается 0xFF или 0xAA. При этом единственное место в программе, где в эту переменную что-то пишется - это обработка прерывания по приему, я ставил брейкпоинт на эту единственную строку - не срабатывает. Потому как я для чистоты эксперимента вообще отключил источник данных.

Я закомментировал практически всю программу
Код
main()
{
while(1)
  {
    LCD_DrawFill(0,0,30,30,BLACK);
  }

}

Выяснилось, что глюк появляется когда присутствует именно эта строка. ну и анализ и комментирование строк в этой функции привели к тому, что глюк вызывается при записи в регистр данных SPI3.

Я бы обозначил эту проблему, как конфликт SPI и RAM если бы не два "но".

1. В SPI ведется запись еще несколькими функциями, но проблема возникает только в одной из них.
2. Я написал кусок кода, который в цикле проверяет каждый элемент rx_buffer на предмет отличия его от изначального 0x00 и поставил на нем брейкпоинт. Понимая, что проверка и кратковременное изменение буфера могут не совпасть по времени, я запустил программу на ночь, по моим прикидкам буфер должен был быть проверен около 3 миллионов раз. Ни разу програма не засекла вмешательство в буфер.


Похожие глюки, с записыванием данных не в те переменные у меня была как-то, когда я объявил безразмерный массив ( uint8_t XXX[]; ) Но в данном случае ничего такого у меня нет.

Скажите, возможно ли что отладчик брешет?
Как используя средства отдладки KEIL подловить момент записи в переменную и определить кто на нее посягает?

Сообщение отредактировал zheka - Jan 19 2017, 09:59
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KnightIgor
сообщение Jan 19 2017, 08:32
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(zheka @ Jan 19 2017, 08:43) *
Господа, я понимаю, что причину моей проблемы вы не найдете, но может быть подскажете, как искать ошибку.
А может быть и констатируете, что это не ошибка, а глюк отладчика...

Я бы посмотрел (по карте памяти), какие переменные размещены до и после исследуемого буфера ("обрамляют" его) . Причина: не исключено, что в процедурах, работающих c "обрамляющими" переменными, нарушается некий указатель. Вторая тема: размер и размещение стэка. Третья тема: наличие, размер и размещение кучи (HEAP). Явно кто-то влазит на исследуемый буфер.

Я также работаю с KEIL. Он может показывать чушь содержимого переменной, если смотреть переменную через watch (особенно при включенной оптимизации кода), но до сих пор KEIL мне всегда показывал правду, если смотреть память по адресу.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zheka   Конфликт RAM и SPI   Jan 19 2017, 06:43
- - scifi   Цитата(zheka @ Jan 19 2017, 09:43) Скажит...   Jan 19 2017, 06:51
- - zheka   ЦитатаКстати, с тактированием всё нормально? Может...   Jan 19 2017, 08:05
- - zheka   ЦитатаЯ бы посмотрел (по карте памяти), Это где пр...   Jan 19 2017, 08:59
- - jcxz   Цитата(zheka @ Jan 19 2017, 09:43) Как ис...   Jan 19 2017, 09:44
|- - scifi   Цитата(jcxz @ Jan 19 2017, 12:44) Насчёт ...   Jan 19 2017, 09:56
||- - jcxz   Цитата(scifi @ Jan 19 2017, 12:56) Когда ...   Jan 19 2017, 09:59
|- - Obam   Опередили про MPU… PM0056 STM32F10xxx Cortex-M3 p...   Jan 19 2017, 10:07
||- - jcxz   Цитата(Obam @ Jan 19 2017, 13:07) 0xE000E...   Jan 19 2017, 10:36
||- - Obam   "Кутузов был без глаза. Нет! У Кутузова н...   Jan 19 2017, 11:05
||- - scifi   Цитата(Obam @ Jan 19 2017, 14:05) STM чум...   Jan 19 2017, 11:18
|- - zheka   ///// Господа, в общем вывод такой - это глюк даж...   Jan 19 2017, 18:22
|- - jcxz   Цитата(zheka @ Jan 19 2017, 21:22) Зато э...   Jan 20 2017, 10:15
|- - scifi   Цитата(zheka @ Jan 19 2017, 21:22) Господ...   Jan 20 2017, 10:33
|- - SasaVitebsk   Цитата(scifi @ Jan 20 2017, 13:33) Я бы н...   Jan 22 2017, 08:58
|- - zltigo   Цитата(SasaVitebsk @ Jan 22 2017, 10:58) ...   Jan 22 2017, 19:10
|- - jcxz   Цитата(SasaVitebsk @ Jan 22 2017, 11:58) ...   Jan 23 2017, 06:45
|- - SasaVitebsk   Цитата(jcxz @ Jan 23 2017, 09:45) Во мног...   Jan 23 2017, 16:12
- - rudy_b   Тут есть еще и проблема с дебильной периферией STM...   Jan 20 2017, 16:34


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

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 15:31
Рейтинг@Mail.ru


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