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

 
 
> Помогите разобраться с 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
 
Start new topic
Ответов
Genadi Zawidowsk...
сообщение Aug 14 2015, 06:22
Сообщение #2


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

Группа: Участник
Сообщений: 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
Сообщение #3





Группа: Новичок
Сообщений: 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
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #5





Группа: Новичок
Сообщений: 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
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #7





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



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

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


Знающий
****

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



Цитата(DemonIce @ Aug 14 2015, 10:49) *
Понятно,
спасибо, буду искать отладчик

Как же вы с ARM без JTAGа работаете?


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
DemonIce
сообщение Aug 14 2015, 12:34
Сообщение #9





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



Цитата(Obam @ Aug 14 2015, 13:30) *
Как же вы с ARM без JTAGа работаете?

Вот так и мучаюсь crying.gif

Жду посылку с ним из поднебесной

А ошибка оказалась ну очень детской, в одном из процессов шла запись в память дисплея и почему то rolleyes.gif в этот момент и происходил сбой
Вопрос решил увеличением приоритета записи в дисплей порт и последующим понижением его после окончания.

Возможно не самое оптимальное решение.

А есть ли способы запретить передачу управления другим процессам при выполнении критических операций?
Не семафоры, а именно аналогично функции запрета/разрешения прерываний

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


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

Есть еще f4discovery со встроенным отладчиком и по слухам возможностью подключать отладчик к другим платам, но пока не вдавался в подробности как этот сделать
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- DemonIce   Помогите разобраться с Keil RTx на stm32f103   Aug 14 2015, 06:03
- - scifi   Цитата(DemonIce @ Aug 14 2015, 09:03) Изу...   Aug 14 2015, 06:10
- - DemonIce   Как бы с программированием то проблем нет, стажа х...   Aug 14 2015, 06:17
|- - kolobok0   Цитата(DemonIce @ Aug 14 2015, 09:17) ......   Aug 14 2015, 14:33
|- - scifi   Цитата(DemonIce @ Aug 14 2015, 15:34) А о...   Aug 14 2015, 14:22
- - Golikov A.   Вообще глобальные переменные не есть хорошая штука...   Aug 14 2015, 07:41
|- - scifi   Цитата(Golikov A. @ Aug 14 2015, 10:41) В...   Aug 14 2015, 07:45
- - Golikov A.   ЦитатаА давайте ещё с бубном попляшем? Ну и не заб...   Aug 14 2015, 08:09
|- - scifi   Цитата(Golikov A. @ Aug 14 2015, 11:09) Т...   Aug 14 2015, 08:25
|- - RabidRabbit   Цитата(Golikov A. @ Aug 14 2015, 11:09) Н...   Aug 14 2015, 08:26
- - Golikov A.   Пока кто-то, что-то не поправил и доступ не перест...   Aug 14 2015, 08:41
- - Golikov A.   Грузить его можно через встроенный бутлоадер, а от...   Aug 14 2015, 11:37
|- - Obam   Цитата(Golikov A. @ Aug 14 2015, 15:37) Г...   Aug 15 2015, 16:44
- - Golikov A.   надо поднять UART это первым делом делается, и сла...   Aug 14 2015, 12:46
- - DemonIce   Цитата(Golikov A. @ Aug 14 2015, 15:46) н...   Aug 14 2015, 13:02


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

 


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


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