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

 
 
 
Reply to this topicStart new topic
> Изменяется содержимое массива...
ЮКОР
сообщение Aug 21 2015, 12:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 17-10-14
Пользователь №: 83 186



STM32F4. Keil.
Есть массив, в который складываются данные от UARTа.
Случайно заметил, что его содержимое, если даже UART disabled, меняется.
Я в программе анализирую один из элементов этого массива и поджигаю светодиод. Он стал случайным образом подмигивать.
Кто или что может писать в массив, портить данные? Динамических массивов я не создаю.
Используется DMA передача данных. Но адреса источников и приёмников не совпадает с адресом массива UARTa.

Подскажите, что нужно сделать чтобы не было произвола?
Заранее спасибо.



Go to the top of the page
 
+Quote Post
Kabdim
сообщение Aug 21 2015, 12:34
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 558
Регистрация: 26-11-14
Из: Зеленоград
Пользователь №: 83 842



А почему бы просто не воспользоваться watchpoint?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Aug 21 2015, 12:43
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(ЮКОР @ Aug 21 2015, 15:17) *
Кто или что может писать в массив, портить данные?

Стек переполняется ?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 21 2015, 14:08
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (ЮКОР @ Aug 21 2015, 15:17) *
Подскажите, что нужно сделать чтобы не было произвола?

Учиться, учиться, учится и думать. После чего сможете задать вопрос правильно. А правильно заданный вопрос содержит не мнее 90% необходимого для ответа.



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 21 2015, 15:10
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(ЮКОР @ Aug 21 2015, 18:17) *
Кто или что может писать в массив, портить данные? Динамических массивов я не создаю.

Так как UART собственной воли не имеет и не может сам что-то куда-то писать, то очевидно портит данные ваш код.

Цитата(ЮКОР @ Aug 21 2015, 18:17) *
Подскажите, что нужно сделать чтобы не было произвола?

Закрыть браузер, подключить эмулятор, открыть исходник и искать, искать.....
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Aug 24 2015, 06:34
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Для того чтобы устранить ошибку надо:
1. найти ошибку
2. устранить
Вы что серьезно думаете это поможет человеку, который такое спрашивает?


По сути вопроса. Данные могут испортиться когда кто-то что-то пишет. Потому по всей вашей программе найдите присвоения (особенно где вы что-то копируете по указателям или блоками в массив), в этих местах и ищите где вы что-то скопировали мимо адреса. Сразу попробуйте увеличить стэк проекту, может быть он кончился и данные полезли на ваши сверху. Еще раз точно проверьте что у вас все каналы ДМА выключены, проверьте прямо регистры.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 24 2015, 16:44
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Golikov A. @ Aug 24 2015, 12:34) *
Еще раз точно проверьте что у вас все каналы ДМА выключены, проверьте прямо регистры.

Вы что серьёзно думаете, что человек, который такое спрашивает, может использовать DMA? :-D
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Aug 24 2015, 17:03
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
Вы что серьёзно думаете, что человек, который такое спрашивает, может использовать DMA? :-D


я не думаю, я знаю,

Цитата
Используется DMA передача данных. Но адреса источников и приёмников не совпадает с адресом массива UARTa.


вот его бы я отключил на время проверки....
А в целом шутка принимается
Go to the top of the page
 
+Quote Post
DrGluck
сообщение Aug 24 2015, 17:19
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-11-05
Из: Россия
Пользователь №: 11 361



"... что нужно сделать чтобы не было произвола? ..." © sm.gif

Для начала - "исходник в студию" ...


--------------------
"... Ищущий вечно, однажды найдя, то, что искал бесконечно, мимо прошёл, совершенно беспечно, с кем-то о вечном шутя ..."
Go to the top of the page
 
+Quote Post
mantech
сообщение Aug 24 2015, 17:31
Сообщение #10


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(jcxz @ Aug 24 2015, 19:44) *
Вы что серьёзно думаете, что человек, который такое спрашивает, может использовать DMA? :-D


Использовать-то может, другой вопрос - как? wacko.gif

А если по сути, то проверять надо поэтапно:
1) "внимательное всматривание" в код программы и понимание того, что она делает
2) отключение "ненужных" процедур
3) дебаг-отчеты в терминалку
а остальное - по обстоятельствам
Go to the top of the page
 
+Quote Post
scifi
сообщение Aug 24 2015, 18:00
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(mantech @ Aug 24 2015, 20:31) *
... программы и понимание того, что она делает

Фигасе! Так ведь все вопросы отпадут. В форуме станет пусто аки в пустыне laughing.gif
Нет, на это мы пойтить не можем biggrin.gif
Go to the top of the page
 
+Quote Post
mantech
сообщение Aug 25 2015, 07:10
Сообщение #12


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(scifi @ Aug 24 2015, 21:00) *
Фигасе! Так ведь все вопросы отпадут.


А вот и нефигасе! Когда ТС начнет вдумываться в то, что наваял, тут столько вопросов будет, для чего то и это, что отвечать не успеем biggrin.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:45
Рейтинг@Mail.ru


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