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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Помогите разобраться с Keil RTx на stm32f103, Глобальные переменные
DemonIce
сообщение Aug 14 2015, 06:03
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 14-08-15
Пользователь №: 87 982



Доброго дня!
Уважаемые Гуру, помогите разобраться с RTx

Изучать мк начал недавно, опыта как такового не хватает, а интерес очень огромен.
Очень хочется научится работать с операционкой.
Уже могу запускать процессы, включать таймер, но вот хоть убейте не пойму как работать с глобальными переменными.

На данный момент объявляю переменную static long count, наращиваю ее на единицу через таймер раз в секунду, вывожу на дисплей в отдельном процессе, доходит до 249 и операционка "зависает".

Насколько я понимаю - вся проблема в stack overflow, отключаю проверку в настройках и все работает, а вот как избежать этой ошибки - ума не приложу.

Или хотя бы дайте пинка в сторону описания работы с глобальными переменными в rtx. Сам ничего найти не смог (или ничего не понял ((()

Go to the top of the page
 
+Quote Post
scifi
сообщение Aug 14 2015, 06:10
Сообщение #2


Гуру
******

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



Цитата(DemonIce @ Aug 14 2015, 09:03) *
Изучать мк начал недавно, опыта как такового не хватает, а интерес очень огромен.
Очень хочется научится работать с операционкой.

ИМХО, ось надо отложить на потом.
Для начала надо на простых программах шишки набить. В конце концов, язык программирования выучить. А если добавить ещё и ось, то это дополнительное поле граблей. Лучше не надо.
Go to the top of the page
 
+Quote Post
DemonIce
сообщение Aug 14 2015, 06:17
Сообщение #3





Группа: Новичок
Сообщений: 7
Регистрация: 14-08-15
Пользователь №: 87 982



Как бы с программированием то проблем нет, стажа хватает с головой, но вот только на обычных ПК.
Да и шишек на простых програмках набил, а вот именно с ОС и хочется разобраться, не хватает мне многозадачности.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Aug 14 2015, 06:22
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Если стажа хватает, должны понять что количество инкрементнов переменной в том виде, как Вы описываете, на размер занятого стека не влияет.
Скорее всего в Вашем случае "зависнет" и само по себе через некоторое время после запуска.
Ну не сама собой, либо действительно стек портится или входите в deadlock (взаимная блокировка задач) или просто ждете события которе никогда не нступит...

Сообщение отредактировал Genadi Zawidowski - Aug 14 2015, 06:28
Go to the top of the page
 
+Quote Post
DemonIce
сообщение Aug 14 2015, 06:33
Сообщение #5





Группа: Новичок
Сообщений: 7
Регистрация: 14-08-15
Пользователь №: 87 982



Цитата(Genadi Zawidowski @ Aug 14 2015, 09:22) *
количество инкрементнов переменной в том виде, как Вы описываете, на размер занятого стека не влияет.


Вот как раз это в ступор то и вводит

Цитата(Genadi Zawidowski @ Aug 14 2015, 09:22) *
Скорее всего в Вашем случае "зависнет" и само по себе через некоторое время после запуска.


Нет никаких ожиданий, циклы бесконечны

Цитата(Genadi Zawidowski @ Aug 14 2015, 09:22) *
либо действительно стек портится или входите в deadlock (взаимная блокировка задач) или просто ждете события которе никогда не нступит...


Сам думаю о том же, что процесс пытается обратится к переменной в момент записи в нее значения
а как это обойти?
Go to the top of the page
 
+Quote Post
scifi
сообщение Aug 14 2015, 06:40
Сообщение #6


Гуру
******

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



Цитата(DemonIce @ Aug 14 2015, 09:33) *
Сам думаю о том же, что процесс пытается обратится к переменной в момент записи в нее значения
а как это обойти?

Бессмыслица какая-то. Вы уверены, что у вас есть опыт программирования?
Вы вообще представляете, как процессор работает? Как переменные читаются и записываются? Какой такой процесс? Выбросьте эту чушь из головы.
Go to the top of the page
 
+Quote Post
DemonIce
сообщение Aug 14 2015, 06:42
Сообщение #7





Группа: Новичок
Сообщений: 7
Регистрация: 14-08-15
Пользователь №: 87 982



Цитата(scifi @ Aug 14 2015, 09:40) *
Бессмыслица какая-то. Вы уверены, что у вас есть опыт программирования?
Вы вообще представляете, как процессор работает? Как переменные читаются и записываются? Какой такой процесс? Выбросьте эту чушь из головы.

уверен
но других объяснений найти не могу, без обращения к этой переменной диоды мигают до бескончености, а при использовании ее - 249 циклов записи

Причем код менялся, менялись интервалы, число 249 остается постоянным

Сообщение отредактировал DemonIce - Aug 14 2015, 06:43
Go to the top of the page
 
+Quote Post
scifi
сообщение Aug 14 2015, 06:47
Сообщение #8


Гуру
******

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



Цитата(DemonIce @ Aug 14 2015, 09:42) *
но других объяснений найти не могу, без обращения к этой переменной диоды мигают до бескончености, а при использовании ее - 249 циклов записи

Надо разбираться в первопричинах сбоя. Скорее всего, сама по себе эта переменная ни при чём, просто это добавление к программе спровоцировало сбой в другом месте. Этот сбой случился бы так или иначе.
Надо собирать диагностическую информацию. Использование стеков, к примеру, и всё такое прочее. Внутрисхемный отладчик для этого оч. хорош.
Go to the top of the page
 
+Quote Post
DemonIce
сообщение Aug 14 2015, 06:49
Сообщение #9





Группа: Новичок
Сообщений: 7
Регистрация: 14-08-15
Пользователь №: 87 982



Цитата(scifi @ Aug 14 2015, 09:47) *
Надо разбираться в первопричинах сбоя. Скорее всего, сама по себе эта переменная ни при чём, просто это добавление к программе спровоцировало сбой в другом месте. Этот сбой случился бы так или иначе.
Надо собирать диагностическую информацию. Использование стеков, к примеру, и всё такое прочее. Внутрисхемный отладчик для этого оч. хорош.

Понятно,
спасибо, буду искать отладчик
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Aug 14 2015, 07:41
Сообщение #10


Гуру
******

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



Вообще глобальные переменные не есть хорошая штука для операционки....
Вроде как ее надо через маил боксы из одного процесса в другие прокидывать.
Или делать структуру с симафорами, а так это все как-то зыбко ИМХО....

а вы пробовали переменную в один поток запихать, вдруг у вас программа просто больше 249 по какой-то причине выводить не умеет?
Go to the top of the page
 
+Quote Post
scifi
сообщение Aug 14 2015, 07:45
Сообщение #11


Гуру
******

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



Цитата(Golikov A. @ Aug 14 2015, 10:41) *
Вообще глобальные переменные не есть хорошая штука для операционки....
Вроде как ее надо через маил боксы из одного процесса в другие прокидывать.
Или делать структуру с симафорами, а так это все как-то зыбко ИМХО....

А давайте ещё с бубном попляшем? Ну и не забывайте помолиться перед подходом к клавиатуре. lol.gif
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Aug 14 2015, 08:09
Сообщение #12


Гуру
******

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



Цитата
А давайте ещё с бубном попляшем? Ну и не забывайте помолиться перед подходом к клавиатуре.

Не понял иронии...

То есть вы считаете что стандартные методы по защите данных с совместным доступом и организация правильного потока обмена данными - это пляски с бубном?

Научите меня тогда пожалуйста, как вы правильно без бубна работаете с глобальными переменными?

Go to the top of the page
 
+Quote Post
scifi
сообщение Aug 14 2015, 08:25
Сообщение #13


Гуру
******

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



Цитата(Golikov A. @ Aug 14 2015, 11:09) *
То есть вы считаете что стандартные методы по защите данных с совместным доступом и организация правильного потока обмена данными - это пляски с бубном?

То есть я считаю, что это никакого отношения к зависанию не имеет.
А так да, правильные методы - это хорошо. Ещё отступы должны быть красивые и комментарии внятные.
Go to the top of the page
 
+Quote Post
RabidRabbit
сообщение Aug 14 2015, 08:26
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 3-12-09
Из: Россия, Москва
Пользователь №: 54 040



Цитата(Golikov A. @ Aug 14 2015, 11:09) *
Научите меня тогда пожалуйста, как вы правильно без бубна работаете с глобальными переменными?

Ну, если обращения к глобальной переменной являются атомарными, и есть один писатель и 1+ читателей, то бубен не требуется, равно как защита данных и прочие мьютексы...
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Aug 14 2015, 08:41
Сообщение #15


Гуру
******

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



Пока кто-то, что-то не поправил и доступ не перестал быть атомарным, или не появился второй писатель....

ИМХО надо правильно организовывать поток данных, тогда оно всегда будет хорошо работать...
Go to the top of the page
 
+Quote Post

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

 


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


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