Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 19.07.2007, 13:32  
DenisLeonidovich
Прохожий
 
Регистрация: 28.08.2006
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
DenisLeonidovich на пути к лучшему
По умолчанию AVR+GCC+jacOS

Контроллер ATmega16, компилятор WinAVR, операционка jacOS 1.06, отлаживаю в Proteus 7.1.
Применяю операционную систему из-за сжатых сроков на разработку.
За день сделал первые 3 задачи - динамическую индикацию, обработку нажатия кнопок + часы. Дальше при добавлении каждой новой задачи стали возникать целые букеты глюков, и сейчас почти все время уходит не на написание самой программы, а устранение этих глюков. После 6-й задачи силы и терпение мои исчерпались. Нужно срочно что-то предпринимать, времени в обрез.
Основные глюки вот в чем: В jacOS-е единый стек для задач, причем в этом стеке как данные (static), так и адреса. Во время выполнения задачи указатель стека иногда смещается и при возвращении из задачи по команде "ret" в счетчик команд возвращается не адрес, а какие-нибудь данные и частенько программа просто вылетает за пределы.
Может кто применял jacOS на GCC, могли бы чем помочь.
Очень нужна помощь, времени катастрофически не хватает.
Реклама:
DenisLeonidovich вне форума  
Непрочитано 23.07.2007, 16:49  
mikle2000
Частый гость
 
Регистрация: 26.08.2006
Сообщений: 34
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
mikle2000 на пути к лучшему
По умолчанию Re: AVR+GCC+jacOS

Сообщение от DenisLeonidovich
Во время выполнения задачи указатель стека иногда смещается и при возвращении из задачи по команде "ret" в счетчик команд возвращается не адрес, а какие-нибудь данные и частенько программа просто вылетает за пределы.
Может кто применял jacOS на GCC, могли бы чем помочь.
Очень нужна помощь, времени катастрофически не хватает.
Применял, на IAR - особой разници нет на чем.
А глюк скорей всего у Вас из-за того, что вы пользуетесь командами jacOS за пределами задачи. То есть - есть задача, задача вызывает свою подпрограмму, а в этой подпрограмме использована например OS_Delay. Это первое и наиболее вероятное. Второе: отключите ВООБЩЕ оптимизацию при компилировании, возможно компилятор неверно трактует команду OS_Cooperate (не как CALL, а как JMP такое бывает). И третье: увеличьте размер стека раза в два.
А вообще не плохая операционка - простая и легкая. Мне понравилась. Только очень важно - нужно ВНИМАТЕЛЬНО читать описание к ней (лучше выучить наизусть ).
mikle2000 вне форума  
Непрочитано 24.07.2007, 12:25  
DenisLeonidovich
Прохожий
 
Регистрация: 28.08.2006
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
DenisLeonidovich на пути к лучшему
По умолчанию

Убрал все дополнительные подпрограммы, свел программу к двум задачам. Первая задача - часы реальногое времени и передача сообщения каждую секунду; вторая - индикация + прием сообщение от первой задачи и обновление данных на дисплее. Тип сообщения - указател на структура типа:
struct {
char hour;
char minute;
char second;
}
- в отправитель этот тип static, в получателе - auto;
результат - вылет!

Дальше чудеса: делаю получатель типа static - всё отлично.
Вот что заметил - во время глюка, когда вызывается задача, почему-то выполняется одна (!) команда PUSH - в конце задачи команда POP отсуствует, отсюда и смещение указателя стека, и после выхода из задачи ret происходит вылет.
Написал разработчику - молчок.
DenisLeonidovich вне форума  
Непрочитано 24.07.2007, 14:24  
mikle2000
Частый гость
 
Регистрация: 26.08.2006
Сообщений: 34
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
mikle2000 на пути к лучшему
По умолчанию

Сообщение от DenisLeonidovich
... когда вызывается задача, почему-то выполняется одна (!) команда PUSH - в конце задачи команда POP отсуствует, отсюда и смещение указателя стека, и после выхода из задачи ret происходит вылет.
Написал разработчику - молчок.
Попробуйте в Make-файле указать оптимизацию “0” – отсутствует. И оттрасируйте тоже место.
Вообще сказать где собака порылась так очень сложно (не видя текста программы). У меня, например, в самом начале работы с этой ОС 100% всех ошибок стека и выхода за пределы программы были связаны с некорректным использованием команд ОС (внимательным чтением описания ОС – проблема решалась). Один раз проблема была в компиляторе (об этом тоже говориться в мануале). Разобравшись - сделал уже несколько проектов на этой ОС.
Попробуйте использовать библиотеку As3tin2 (хотя, возможно вы ее и используете).
И кстати, а почему версия 1.06? Уже давно есть 1.07.5.
mikle2000 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация в AVR GCC alberio Микроконтроллеры, АЦП, память и т.д 45 02.03.2018 12:38
gcc, iar, code vision AVR ? schotki Микроконтроллеры, АЦП, память и т.д 48 26.05.2009 20:15
Настройки gcc ARM под windows __djan_ Микроконтроллеры, АЦП, память и т.д 7 28.03.2009 02:49
GCC AVR не работает printf("Hello word") Kabron Proteus, KiCAD и другие ECAD 8 03.03.2007 14:33
GNU GCC AVR вопрос по переменным.. Mozart Микроконтроллеры, АЦП, память и т.д 3 09.02.2007 20:00


Часовой пояс GMT +4, время: 00:44.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot