|
Помогите разобраться с Keil RTx на stm32f103, Глобальные переменные |
|
|
|
Aug 14 2015, 06:03
|
Группа: Новичок
Сообщений: 7
Регистрация: 14-08-15
Пользователь №: 87 982

|
Доброго дня! Уважаемые Гуру, помогите разобраться с RTx
Изучать мк начал недавно, опыта как такового не хватает, а интерес очень огромен. Очень хочется научится работать с операционкой. Уже могу запускать процессы, включать таймер, но вот хоть убейте не пойму как работать с глобальными переменными.
На данный момент объявляю переменную static long count, наращиваю ее на единицу через таймер раз в секунду, вывожу на дисплей в отдельном процессе, доходит до 249 и операционка "зависает".
Насколько я понимаю - вся проблема в stack overflow, отключаю проверку в настройках и все работает, а вот как избежать этой ошибки - ума не приложу.
Или хотя бы дайте пинка в сторону описания работы с глобальными переменными в rtx. Сам ничего найти не смог (или ничего не понял ((()
|
|
|
|
|
Aug 14 2015, 06:17
|
Группа: Новичок
Сообщений: 7
Регистрация: 14-08-15
Пользователь №: 87 982

|
Как бы с программированием то проблем нет, стажа хватает с головой, но вот только на обычных ПК. Да и шишек на простых програмках набил, а вот именно с ОС и хочется разобраться, не хватает мне многозадачности.
|
|
|
|
|
Aug 14 2015, 06:33
|
Группа: Новичок
Сообщений: 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 (взаимная блокировка задач) или просто ждете события которе никогда не нступит... Сам думаю о том же, что процесс пытается обратится к переменной в момент записи в нее значения а как это обойти?
|
|
|
|
|
Aug 14 2015, 06:42
|
Группа: Новичок
Сообщений: 7
Регистрация: 14-08-15
Пользователь №: 87 982

|
Цитата(scifi @ Aug 14 2015, 09:40)  Бессмыслица какая-то. Вы уверены, что у вас есть опыт программирования? Вы вообще представляете, как процессор работает? Как переменные читаются и записываются? Какой такой процесс? Выбросьте эту чушь из головы. уверен но других объяснений найти не могу, без обращения к этой переменной диоды мигают до бескончености, а при использовании ее - 249 циклов записи Причем код менялся, менялись интервалы, число 249 остается постоянным
Сообщение отредактировал DemonIce - Aug 14 2015, 06:43
|
|
|
|
|
Aug 14 2015, 06:49
|
Группа: Новичок
Сообщений: 7
Регистрация: 14-08-15
Пользователь №: 87 982

|
Цитата(scifi @ Aug 14 2015, 09:47)  Надо разбираться в первопричинах сбоя. Скорее всего, сама по себе эта переменная ни при чём, просто это добавление к программе спровоцировало сбой в другом месте. Этот сбой случился бы так или иначе. Надо собирать диагностическую информацию. Использование стеков, к примеру, и всё такое прочее. Внутрисхемный отладчик для этого оч. хорош. Понятно, спасибо, буду искать отладчик
|
|
|
|
|
Aug 14 2015, 08:09
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата А давайте ещё с бубном попляшем? Ну и не забывайте помолиться перед подходом к клавиатуре. Не понял иронии... То есть вы считаете что стандартные методы по защите данных с совместным доступом и организация правильного потока обмена данными - это пляски с бубном? Научите меня тогда пожалуйста, как вы правильно без бубна работаете с глобальными переменными?
|
|
|
|
|
Aug 14 2015, 12:34
|
Группа: Новичок
Сообщений: 7
Регистрация: 14-08-15
Пользователь №: 87 982

|
Цитата(Obam @ Aug 14 2015, 13:30)  Как же вы с ARM без JTAGа работаете? Вот так и мучаюсь Жду посылку с ним из поднебесной А ошибка оказалась ну очень детской, в одном из процессов шла запись в память дисплея и почему то  в этот момент и происходил сбой Вопрос решил увеличением приоритета записи в дисплей порт и последующим понижением его после окончания. Возможно не самое оптимальное решение. А есть ли способы запретить передачу управления другим процессам при выполнении критических операций? Не семафоры, а именно аналогично функции запрета/разрешения прерываний Цитата(Golikov A. @ Aug 14 2015, 14:37)  Грузить его можно через встроенный бутлоадер, а отлаживать выводом в порт. через встроенный и гружу, а для тестирования использую дисплей с точскрином Есть еще f4discovery со встроенным отладчиком и по слухам возможностью подключать отладчик к другим платам, но пока не вдавался в подробности как этот сделать
|
|
|
|
|
Aug 14 2015, 13:02
|
Группа: Новичок
Сообщений: 7
Регистрация: 14-08-15
Пользователь №: 87 982

|
Цитата(Golikov A. @ Aug 14 2015, 15:46)  надо поднять UART это первым делом делается, и слать данные в порт, раньше через переходник UART-RS232-USB, А сейчас уже полно готовых UART-USB. На всех системах всегда поднимает отладочный порт.
Если другие платы тоже ST процы имею, то вам для этого надо кинуть 4 проводка, и 2 джамперочка снять. А если другие платы не от st то там хитрый процесс переконфигурации прошивки, такой, что по мне возня не стоит времени.... Спасибо за совет про uart - сделаю а с подключением отладчика не буду пока заморачиваться, подожду готового, хотя по описаниям вторая плата поддерживает его вот только самого описания подключения нет
|
|
|
|
|
Aug 14 2015, 14:22
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(DemonIce @ Aug 14 2015, 15:34)  А ошибка оказалась ну очень детской, в одном из процессов шла запись в память дисплея и почему то  в этот момент и происходил сбой "Почему-то"? Интересно, почему. Поскольку объяснение не найдено, то, скорее всего, причина не устранена, и проблема отложена до следующего раза. Цитата(DemonIce @ Aug 14 2015, 15:34)  Возможно не самое оптимальное решение. Это не решение, это танец с бубном, который неожиданно дал результат.
|
|
|
|
|
Aug 14 2015, 14:33
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(DemonIce @ Aug 14 2015, 09:17)  ... стажа хватает с головой, но вот только на обычных ПК. ...не хватает мне многозадачности. присоединяюсь к товарищам которые высказали мысль, что описание Вашего стажа не соизмерим с беззащитностью перед элементарными багами. По поводу отладки... При большом желании и мизерном опыте - и одного пина хватает, для понимания не только где глючит но и что является причиной. А у продвинутых товарищей вообще вываливается дебаг аут через пин, плисину и понтово на отдельный экран... Т.к. подходы к многозадачности везде одинаковы - то любому мало-мальски разумеющему со словарём по не нашему языку, заминка составит (да нифига не составит).... А через пару дней уже и по памяти писать все апишные вызовы... Так, что не лохматьте бабушку, выкладывайте сырец в виде рыбы которая у Вас не машет хвостом. Сразу гадания на кофейной гуще превратится в дельные советы соответствующие Вашему уровню знаний... удачи вам, она вам потребуется с таким подходом
Сообщение отредактировал kolobok0 - Aug 14 2015, 14:36
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|