Перейти к содержанию
    

Здравствуйте!

 

Подскажите, пожалуйста, человеку который только знакомится с uC-OS, какими компиляторами можно собрать проект, использузщий эту ОС под ARM? В первую очередь интересует насколько подходит GCC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте!

 

Подскажите, пожалуйста, человеку который только знакомится с uC-OS, какими компиляторами можно собрать проект, использузщий эту ОС под ARM? В первую очередь интересует насколько подходит GCC.

Большинство портов этой ОС ориентированы под IAR и GCC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброе время суток! Совсем недавно начал заниматься программированием МК, почти сразу (толком не разобравшись) подсел на uCOS: скачал ядро, порт для ARM, пару готовых проектов под IAR-ом, опираясь на них "собрал" ядро с портом, создал пару простеньких задач,- работает! Вот теперь хочется понять: а че я сделал? Пожалуйста, кто общался с данной ОС, подскажите:

1. Как корректно инициализировать таймер, необходимый для работы uCOS (по книге должен тикать с частотой 10- 100 Гц), не пойму взаимосвязь данных тиков операционки и, собственно, квареца-> Как точно определить время выполнения конкретной задачи?

2. Почему (в скачанных проектах) между OSInit() и OSStart люди создают одну задачу, а потом, уже из нее все остальные? По manual-у uCOS-а обязательно нужно создать ХОТЯ БЫ ОДНУ, но не одну единственную. Где тайный смысл?

3. В чем разница в использовании семафоров и динамическим управлением приоритетов?

Буду очень признателен за пояснения!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброе время суток! Совсем недавно начал заниматься программированием МК, почти сразу (толком не разобравшись) подсел на uCOS: скачал ядро, порт для ARM, пару готовых проектов под IAR-ом, опираясь на них "собрал" ядро с портом, создал пару простеньких задач,- работает! Вот теперь хочется понять: а че я сделал? Пожалуйста, кто общался с данной ОС, подскажите:

1. Как корректно инициализировать таймер, необходимый для работы uCOS (по книге должен тикать с частотой 10- 100 Гц), не пойму взаимосвязь данных тиков операционки и, собственно, квареца->

Связь такая:

кварц задает тактовую uC. В зависимости от наличия PLL и его настроек эта тактовая "as is" или умноженная/поделенная на что-то поступает на тактирование ядра и периферии. Тактовая периферии тактирует аппаратный таймер, который вы настраиваете на генерацию периодичесикх прерываний с определенной частотой. Эти прерывания можно использовать для тиков ОС.

То есть алгоритм: определяете, какой период тиков ОС вам в вашей системе необходим, выбираете таймер и настраиваете его на этот период (конкретные значения, записанные в счетчики таймера будут зависеть от частоты кварца в конечном итоге), вызываете из прерывания таймера функцию тиков ОС

OSTimeTick()

 

Как точно определить время выполнения конкретной задачи?

Вопрос не понятен. В контексте embedded имеет смысл говорить о % процессорного времени, который среднестатистически необходим для выполнения задаче. Это можно вроде сделать при помощи встроенной в uCOS статистики. А проще банально дергая ноги порта и наблюдая скопом.

 

2. Почему (в скачанных проектах) между OSInit() и OSStart люди создают одну задачу, а потом, уже из нее все остальные? По manual-у uCOS-а обязательно нужно создать ХОТЯ БЫ ОДНУ, но не одну единственную. Где тайный смысл?

Тайный смысл здесь в том, что если хочется использовать задачу статистики, то нужно создать одну задачу, запустить ОС с ней и из нее вызвать OSStatInit()

Подробно об этом расписано в книге по uCOS.

Если задача статистики не нужна, то можно создавать скопом все задачи а потом запускать ОС.

 

3. В чем разница в использовании семафоров и динамическим управлением приоритетов?

Да как бы 2 совершенно разных понятия.

Или это вопрос из серии "чем каша от пионера отличается?" :)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо большое! А про семафоры я для себя понял так: приоритеты - регулируем порядок следования задач, семафоры - регулируют порядок доступа задач к каким-либо данным (общим).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

>> приоритеты - регулируем порядок следования задач

Порядок следования задач - вообще такого понятия быть не должно.

 

>> семафоры - регулируют порядок доступа задач

>> к каким-либо данным (общим).

Это делают мютексы (в общем-то тоже семафоры, но со своими свойствами)

 

Вообще рекомендую книжку почитать - там про основные спрособы взаимодействия и синхронизации задач доступно расписано:

http://www.pic24.ru/upload/RTC.rar (10 MB)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ссылку! Буду изучать, может появятся более умные вопросы. :twak:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, я наберусь наглости, и все-таки спрошу: А может есть у кого такая штука "uCOS-II-KA-CSpy"? Я нашел, но старая версия, работает только под IAR-ом 3.х, а под 4. - не хотит. Для "наглядности" не помешала бы! Может кто подскажет пути до'бычи данного чуда!? Или, может быть, способ модификации старой версии под IAR4.30?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, я наберусь наглости, и все-таки спрошу: А может есть у кого такая штука "uCOS-II-KA-CSpy"? Я нашел, но старая версия, работает только под IAR-ом 3.х, а под 4. - не хотит. Для "наглядности" не помешала бы! Может кто подскажет пути до'бычи данного чуда!? Или, может быть, способ модификации старой версии под IAR4.30?

Новые версии IAR EW уже содержат в себе этот плагин.

См. Project->Options...->Plugins->uC/OS-II

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хорошо, спасибо. Буду искать новый IAR. А вот 4.30 - в этом отношении попадает в раздел "старый". Возможно 4.40???, попробую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хорошо, спасибо. Буду искать новый IAR. А вот 4.30 - в этом отношении попадает в раздел "старый".

Да, в нем этого плагина еще не было

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброе время суток! Небходима косультация... Возможно кто-нибудь работал с микросишными GUями!? Мне удалось подцепить эти GUI к своему "приложению": по шаблону в примерах, вроде как, удалось написать свой "драйвер" к LCD - фунциклирует, - все стандартные средства (типа линию нарисовать, полигон, текст со своим шрифтом и т.д.) отрабатывают. Хотел задействовать Windows Manager (WM) с последующей возможностью размещения всяких Widget-ов. Пробовал создавать разные widget-ы (буквально, копируя, куски кода из примеров), а в ответ тишина, приложение виснет наглухо (уже в железе), причем пробовал как с Осью, так и без нее. Может кто-нибудь сталкивался с подобной проблемой? Поделитесь пожалуйста! Заранее благодарен!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Свершилось!

Прикрутил uCOS-VIEW V1.10 к uCOS 2.83 на LPC-2148-E (платка от IAR/OLIMEX)!

Пришлось кой-чего дописать ручонками и усё заработало. УРА!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброе время суток! Многоуважаемые, кто-нибудь работал с менеджером таймеров в ucos-е? Сейчас я уперся в недостаток таймеров, решил разузнать что енто такое (timer manager?), сперва разузнав немного - обрадовался, но как далее выяснилось можно "создавать" таймеры с периодами, непревышающими перид тика самой операционки. Может я не прав? А операционка тикает 10-100 раз в сек (по мануалу, у меня 100), а мне нужны микросекунды!!! Подскажите, пожалуйста, как выйти из данной ситуации? И вообще может я могу периодически "отбирать" таймер у ОС? - ведь он мне требуется в критической секции кода, где я все равно запрещаю все прерывания средствами ОС (необходимы точные выдержки во времени). Буду признателен за любой совет!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброе время суток! Многоуважаемые, кто-нибудь работал с менеджером таймеров в ucos-е? Сейчас я уперся в недостаток таймеров, решил разузнать что енто такое (timer manager?), сперва разузнав немного - обрадовался, но как далее выяснилось можно "создавать" таймеры с периодами, непревышающими перид тика самой операционки. Может я не прав? А операционка тикает 10-100 раз в сек (по мануалу, у меня 100), а мне нужны микросекунды!!! Подскажите, пожалуйста, как выйти из данной ситуации? И вообще может я могу периодически "отбирать" таймер у ОС? - ведь он мне требуется в критической секции кода, где я все равно запрещаю все прерывания средствами ОС (необходимы точные выдержки во времени). Буду признателен за любой совет!

 

Что-то я не помню менеджера таймеров, может в новых версиях ОС он появился, а у меня более старая.

Но, количество тиков ОС в секунду обусловлено в основном фактором загрузки процессора на обработку этих тиков. Если процессор быстрый, то количество тиков ОС в секунду можно и увеличить. Если взять к примеру ARM7 на 60МГц тактовой ядра, то можно вполне делать тики ОС с периодом 100 мкс, если это действительно необходимо. Можно попробовать даже 50 мкс, но нужно смотреть загрузку процессора. Если же вам нужны именно микросекунды, то тут необходимо использовать отдельный аппаратный таймер.

По поводу отбирания таймера у ОС. Так вы должны не отбирать таймер, а всего навсего периодически вызывать OSTimeTick(). Как вы это сделаете - ваше лично дело.

К примеру, вы можете запрограммировать таймер на 10 мкс, делать в прерывании все, что вам нужно, а дополнительно каждое 1000-е прерывание вызывать OSTimeTick().

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...