Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Потребления ресурсов пустой системой
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > FreeRTOS
Страницы: 1, 2
den_po
Цитата(A. Fig Lee @ Apr 7 2015, 16:59) *
А опасения связаны в первую очередь с тем что будет как всегда - тестировать никто не тестирует,
...
ПыСы кокос тут не причем

Именно что причём
Golikov A.
Цитата
Э... Поясните, пожалуйста. Ничто и никогда не будет запущено, если Вы не указали в каких либо конфигах, что ЭТО следует запускать тогда то. Линукс сам по себе, после старта ядра, запускает /sbin/init, и всё. Никакой самодеятельности. А дальше - Вы можете сами себе написать этот init, и получите свое единственное приложение. А можете поконфигурировать далее, добавив того или этого.

1. Ну и так много что само запущено изначально, самое голое ядро линукса все же несет в себе кучу всего. Если мы говорим не о переписи линукса.
2. Потом если есть линукс то всегда найдется придурок который обновит какой-нибудь драйвер или запустит какую-то службу, чтобы сделать устройство лучше, и даже вам не скажет. А вы потом будете смотреть на устройство которое вдруг стало себя вести как-то не так...
3. У меня кончились отмазки почему линукс 100% злоsm.gif Но линукс это не то что я бы сейчас хотел ставить на проц, тем более у меня все же кортексы м3, мне он просто не интересен.






Цитата
Все примерно так, только, желательно, без лишнего копирования буферов - принялось в буфер - ссылку на этот буфер в очередь на отправку, без копирования данных, по возможности.

ну ТСР все равно все что пришло должен разобрать, что-то служебный трафик, что-то данные пользователю выше, что-то вообще порезать. Так что что приняли отдать дальше точно не выйдет.
И что делать с конфликтом одновременного доступа к данным? Критические секции и семафоры?
SM
Цитата(Golikov A. @ Apr 7 2015, 16:18) *
1. Ну и так много что само запущено изначально, самое голое ядро линукса все же несет в себе кучу всего. Если мы говорим не о переписи линукса.

Это бред полный. В ядре ничего не запущено само по себе, кроме каких-то тредов внутри драйверов, да и то, это большая редкость.

Цитата(Golikov A. @ Apr 7 2015, 16:18) *
2. Потом если есть линукс то всегда найдется придурок который обновит какой-нибудь драйвер или запустит какую-то службу, чтобы сделать устройство лучше, и даже вам не скажет. А вы потом будете смотреть на устройство которое вдруг стало себя вести как-то не так...

КАК? Если Вы в свой дистрибутив включили, допустим, только ядро, свое приложение, и, допустим, ssh-демон для того, чтобы посмотреть логи. И ничего более? Крайне странное у Вас представление о линуксе во встраиваемом устройстве.

Цитата(Golikov A. @ Apr 7 2015, 16:19) *
Критические секции и семафоры?

Критическая секция или mutex для долгих кусков кода, spinlock для коротких.
Golikov A.
Цитата
Это бред полный. В ядре ничего не запущено само по себе, кроме каких-то тредов внутри драйверов, да и то, это большая редкость.

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

Цитата
КАК? Если Вы в свой дистрибутив включили, допустим, только ядро, свое приложение, и, допустим, ssh-демон для того, чтобы посмотреть логи. И ничего более? Крайне странное у Вас представление о линуксе во встраиваемом устройстве.

Сейчас такого рода пакости делают другие члены команды. У нас есть распбери в одной системе, с линуксом, так вот наличие линукса позволило всем изначально РС програмерам тоже что-то в нее дописывать, и как они любят с миллиардом потоков и прочей нечистью. Потому что есть возможность запускать программы пользователя. Для этого их надо просто туда положить, и запустить, максимум в конфиге прописать. То есть порочна сама возможность что-то докладывать в готовую систему. РТОСы как я понимаю представляют собой полную сборку, и что-то в нее доложить уже так просто не выйдет, то есть подписанный файл прошивки однозначно определяет что будет крутиться, или я не прав?


Если время от времени внешнее устройство присылает N байт по UART, например, и надо на это среагировать как можно быстрее. В начале пакета стоит заголовок с длинной данных. Как такое делают в РТОСах?
Настраивается ДМА на прерывание по длине заголовка, потом по прерыванию определяется сколько еще допринять, опять настраивается ДМА. А потом по прерыванию выставляется какой-то семафор на запуск задачи - обработки принятого сообщения?

Есть вариант настроить ДМА с запасиком, и время от времени проверять не пришло ли все сообщение, и если пришло обрабатывать. Тогда хорошо бы сделать задачу которая будет это долбить, но как я понимаю время реакции такого рода задачи будет - системный тик, а то и меньше если таких задач несколько. Или же это делается через общую задачу которая контролирует все очереди постоянно, и запускает подзадачи обработки?
SM
Цитата(Golikov A. @ Apr 7 2015, 16:44) *
допустим,... я не настолько искушен. Что-то я смотрел безусловный минимум для того чтобы линукс работал и он был весьма не мал...

Это он не мал, если цель - ОС для полноценной работы пользователя. А если цель - встраиваемая система, то можно ограничиться неким набором библиотек и одним-двумя исполняемыми модулями со своим софтом.

А вот если бригада разработчиков у вас такая, что может несогласовано что-то там написать, подсунуть и запустить, то это, извините, бардак, который просто так не лечится (только хирургически) sm.gif


Что касается уарта, то это же медленный интерфейс, как правило все можно решить в прерывании от наличия в его FIFO данных, или в DPC (workitem, и т.п.), запущенной из этого прерывания.
A. Fig Lee
Цитата(Golikov A. @ Apr 7 2015, 09:03) *
А почему в один день он не мог попасть на машину клиента где оторвало одну из кнопок hjkl. Это не аргумент, это все отмазы. Если бы это была крутая фишка резервирования, то эти бы клавиши дублировали стрелки, а не были бы независимыми...


Компы то разные. На ИБМ вон карактеры были 36 бит, например.
Терминалы разные, ну и так далее.

Цитата(den_po @ Apr 7 2015, 09:17) *
Именно что причём


Понятно. В игнор.
Golikov A.
А скажите, если все же не линукс, то что надо чтобы операционку на проц запихать?

FreeRTOS она вроде как пишут под кортексы заточена (в том числе)
а Freescale MQX все же под колдфаеры, и просто АРМ.

Как я понимаю основное что там от проца зависит это таймер и переключение контекста. То есть надо это либо писать ручками под свой проц, либо искать портированную систему под конкретный проц. И как я понимаю в силу того что FreeRTOS в том числе по кортексы М3 заточена, есть шансы что она заработает из коробки, правильно? А большой ли это шанс?



SM
Цитата(Golikov A. @ Apr 7 2015, 19:15) *
Как я понимаю основное что там от проца зависит это таймер и переключение контекста. То есть надо это либо писать ручками под свой проц, либо искать портированную систему под конкретный проц. И как я понимаю в силу того что FreeRTOS в том числе по кортексы М3 заточена, есть шансы что она заработает из коробки, правильно? А большой ли это шанс?


Это именно так, и касается всех ОС на равных, и линукса в том числе. Лучше всего найти порт конкретно под Ваш проц (или проц конкретно под удачный порт). В таком случае шанс стремится к единице. Иначе есть такой же шанс крепко погеморроиться с портированием (что противоречит использованию ОС для собственного удобства и скорости реализации проекта).

Кроме озвученного, от проца зависят еще все драйверы всего его железа... Ну там SPI, UART, USB, и т.д., а также атомарные операции.
AlexandrY
Цитата(Golikov A. @ Apr 7 2015, 19:15) *
А скажите, если все же не линукс, то что надо чтобы операционку на проц запихать?

FreeRTOS она вроде как пишут под кортексы заточена (в том числе)
а Freescale MQX все же под колдфаеры, и просто АРМ.

Как я понимаю основное что там от проца зависит это таймер и переключение контекста. То есть надо это либо писать ручками под свой проц, либо искать портированную систему под конкретный проц. И как я понимаю в силу того что FreeRTOS в том числе по кортексы М3 заточена, есть шансы что она заработает из коробки, правильно? А большой ли это шанс?


А что такое "из коробки"?
Интересно в каком месте эта FreeRTOS по кортексы заточена. wink.gif
Golikov A.
да кто ее знает в каком.
Из коробки имеется ввиду взял файлики, воткнул и поехали...
У FreeRTOS есть релизы под кортекс м3, это позволяет надеяться что ассемблерный код переключения задач будет уже готов, а так же будет использован системный таймер и так далее что ей нужно для жизни... То есть я надеюсь что это позволит брать файлы, включать в проект кортекса м3 (любого) и запускаться.

Или это очень наивно? И для порта на конкретный проц надо будет много чего полопатить?

С вашим опытом чтобы запустить MQX на произвольном проце, что надо сделать?
AlexandrY
Цитата(Golikov A. @ Apr 8 2015, 11:42) *
да кто ее знает в каком.
Из коробки имеется ввиду взял файлики, воткнул и поехали...
У FreeRTOS есть релизы под кортекс м3, это позволяет надеяться что ассемблерный код переключения задач будет уже готов, а так же будет использован системный таймер и так далее что ей нужно для жизни... То есть я надеюсь что это позволит брать файлы, включать в проект кортекса м3 (любого) и запускаться.

Или это очень наивно? И для порта на конкретный проц надо будет много чего полопатить?

С вашим опытом чтобы запустить MQX на произвольном проце, что надо сделать?


О, сегодня за час удалось портировать FreeRTOS на свою платформу на Kinetis K70.
Немного удивился сколько же задач создает сразу эта FreeRTOS - сразу 37. Правда с uIP стеком.
Нажмите для просмотра прикрепленного файла

Ну и убожество эта FreeRTOS.
Хотя поддержка FreeRTOS есть в IAR, но выглядит очень бедно. Вот что на скриншоте это практически и все. Ну еще листинг очередей есть.
Стек эта RTOS ест не то слово.

Портирование конечно не полное. Т.е. ядро RTOS заработало, но и только.
Периферийные дела пишутся в таких портах какими-то студентами на скверном уровне. Сплошная лапша и баги.
По сути эта ось идет без периферийного уровня , даже без HAL.

Кстати лицензия у FreeRTOS довольно суровая. Суровей чем у MQX в плане обязательного раскрытия и обязательного упоминания.

Характерно, что под Kinetis есть порт FreeRTOS только для одной единственной платформы.
Т.е. тот кто использует Freescale не нуждаются во FreeRTOS поскольку имеют лучшую альтернативу.
den_po
Цитата(AlexandrY @ Apr 8 2015, 16:01) *
Немного удивился сколько же задач создает сразу эта FreeRTOS - сразу 37. Правда с uIP стеком.

Значит, это freertos эти задачи создаёт, а не пользователь?

Цитата(AlexandrY @ Apr 8 2015, 16:01) *
Ну и убожество эта FreeRTOS.
Хотя поддержка FreeRTOS есть в IAR, но выглядит очень бедно.

А поддержка линукса например в иаре есть?

Цитата(AlexandrY @ Apr 8 2015, 16:01) *
Стек эта RTOS ест не то слово.

А это где посмотреть и с чем сравнить?

Цитата(AlexandrY @ Apr 8 2015, 16:01) *
Периферийные дела пишутся в таких портах какими-то студентами на скверном уровне. Сплошная лапша и баги.

Что значит "в таких портах"? И где посмотреть на примеры сплошных багов в официальном репозитории?

Цитата(AlexandrY @ Apr 8 2015, 16:01) *
По сути эта ось идет без периферийного уровня , даже без HAL.

Попробуйте chibios, там, говорят, с hal всё хорошо. Только вот кроме операционки придётся портировать и драйверы.
AlexandrY
Цитата(den_po @ Apr 8 2015, 15:24) *
Значит, это freertos эти задачи создаёт, а не пользователь?


Метко замечено.
Действительно, эт я на такую демку нарвался. biggrin.gif
На самом деле создаются автоматом только две задачи: таймера и IDLE.
uIP стеку не надо было столько задач.

Но скажем в MQX все задачи создаются юзером только явно.

А официальный репозиторй знаете ли содержит все кроме точной версии IDE в которой проект создавался и точной схемы и спецификации платы на которой запускался.
Так что баги там 100%. У меня ни инициализация MAC не пошла ни инициализация портов.


Если б в IAR была бы поддержка линукса, я бы только о линуксе и писал бы.
alexunder
Цитата(AlexandrY @ Apr 8 2015, 14:47) *
Но скажем в MQX все задачи создаются юзером только явно.

Вы хвалите процессоры от Freescale и MQX. А с какими конкретно процессорами Вы используете эту ОС? Спасибо
Golikov A.
И все же, подскажите пожалуйста.

1. Вот я хочу на LPC1768 запустить MQX
2. Вот я хочу на LPC1768 запустить FreeRTOS

какие действия (схемотично) меня ждут в первом и втором случае?
alexunder
Цитата(Golikov A. @ Apr 8 2015, 15:15) *
1. Вот я хочу на LPC1768 запустить MQX

разве MQX портирована под этот мк?
ViKo
Цитата(Golikov A. @ Apr 8 2015, 16:15) *
1. Вот я хочу на LPC1768 запустить MQX
2. Вот я хочу на LPC1768 запустить FreeRTOS

Если в Keil работаете, то лучше
3. Захотите и запустите на LPC1768 CMSIS RTOS RTX - она маленькая, простая, красивая, если хотите, и уже в комплекте. Документация тоже уже на вашем компе.
Golikov A.
Цитата
разве MQX портирована под этот мк?

наверняка нет, потому и хочу схему что меня ждет при портировании, чтобы оценить стоит ли вообще игра свеч

Цитата
Если в Keil работаете, то лучше

Лучше, но очень хочется остаться в провавом поле с LwIP и какими то фри ос. Мне очень нравятся продукты кейла вида ТСР стека, но все же за него надо платить....

А АРМ кейловую ОС выбрал как флагмана, да?
ViKo
Цитата(Golikov A. @ Apr 8 2015, 17:47) *
Лучше, но очень хочется остаться в провавом поле с LwIP и какими то фри ос. Мне очень нравятся продукты кейла вида ТСР стека, но все же за него надо платить....

А АРМ кейловую ОС выбрал как флагмана, да?

В нагрузку. :-)
Есть бесплатная ограниченная Keil IDE. Есть совсем бесплатная для STM32F0.
Пусть докажут, что пользовался не ими.
Golikov A.
А вы уверены что их библиотеке нельзя послать сообщение на которое она ответит свою версию и платность? Исходники то закрыты, сделать такое пять минут работы....
Да и бесплатно ограниченные сильно ограничены, в них вроде РТЛ вообще никакой не входит...
AlexandrY
Цитата(Golikov A. @ Apr 8 2015, 16:15) *
И все же, подскажите пожалуйста.

1. Вот я хочу на LPC1768 запустить MQX
2. Вот я хочу на LPC1768 запустить FreeRTOS

какие действия (схемотично) меня ждут в первом и втором случае?


Поскольку NXP и Freescale слились (в смысле объединились), то наверно нет ничего криминального портировать MQX на LPC. biggrin.gif


Во первых сразу надо определится какую IDE с компилятором вы будете использовать. Ибо дальше образ действий расходится.
Скажем берем IAR.

Потом важнейший вопрос на какой собственно платформе. Сказать LPC1768 - это не сказать ничего.
Какие кварцы и генераторы задействованы, на каких ногах, как сконфигурированы порты, какие внешние периферийные контроллеры и как подключены - вот что здесь главное.

Портировать вы будете с демок. Шаг влево, шаг вправо от референсных по отношению к демкам платформ и ваши демки не запустятся.
В этом смысле хоть во FreeRRTOS вы и найдете демку как раз под LPC1768 для IAR, она у вас на вашей самодельной плате не запустится.

И вот тут вы в равных условиях что с FreeRTOS, что с MQX.

Во FreeRTOS начинаете долго рыть исходники в попытках очистить их от флуда и найти где чё инициализируется. Кстати в демке FreeRTOS нет даже инициализации UART-а, о CAN-е и не мечтайте.

В MQX таже работа, но не надо чистить демку от какого-то там вебсервера поскольку есть примитивные демки хеловорды на консоль.
Знакомых драйверов периферии LPC в MQX не найдете. Но никто не мешает в конфиге поотключать вообще всю инициализацию периферии (user_config.h ), что и должны будете сделать.
Далее в __low_level_init вставляете инициализацию тактирования, портов и UART-а с которым будете работать на консоль.
Далее еще правите файл линкера .icf под ваш чип.
ВСЕ! Портирование MQX как ядра на этом закончено.
Golikov A.
Вот же блин же...
мне не нужны все эти драйверы, и периферия. От операционки мне надо чтобы она задачи переключала, а все остальное я сам напишу. Как то это все не дружелюбно для пользователя...

Неужели чтобы поставить ядро FreeRTOS я не могу его взять голое для кортекса М3 и поставить на свой проц, просто включив в проект... Должна же быть где то голая система, потому что иначе откуда взялась первая демка которую разодрали на все остальные демки?

Кортексов М и АРМ7 например по разному сделаны прерывания, и это может отличать операционку для АРМ просто от операционки для кортекса.

Операционка от кейла входит в лайт комплект, и вроде как там надо просто ее пожелать, и она добавиться в пустой проект, и не надо демку дербанить. Неужели FreeRTOS ставиться не также?

Что в ней такого что она не может использовать абстрактно от типа проца? Системный клок я могу указать, ссылку на таймер могу дать, почему надо демку дербанить? что я не знаю и не понимаю от этого, что заставляет терпеть такие сложности с добавлением операционки в проект?
aaarrr
Цитата(Golikov A. @ Apr 8 2015, 21:40) *
Неужели чтобы поставить ядро FreeRTOS я не могу его взять голое для кортекса М3 и поставить на свой проц, просто включив в проект... Должна же быть где то голая система, потому что иначе откуда взялась первая демка которую разодрали на все остальные демки?

Можете, конечно. Все необходимое есть в \Source, \Demo можно и не смотреть.
AlexandrY
Цитата(Golikov A. @ Apr 8 2015, 21:40) *
что я не знаю и не понимаю от этого, что заставляет терпеть такие сложности с добавлением операционки в проект?


A вот этого я не знаю. wink.gif


Я описал стандартный экспресс метод. Позволяющий запустить RTOS за пару дней.

Вам разве легче будет хелп в онлайне на FreeRTOS читать и по нему восстанавливать что и как?
Так авторы FreeRTOS не запариваются объяснениями как они поступают с компиляторами, линкерами и т.д.

Это в MQX есть три здоровых документа в pdf : юзер мануал, референс мануал и еще мануал отдельно по HAL уровню, не говоря уже что по TCP, USB, FS и проч. у них отдельные мануалы.
И то я не рискнул просто по ним взять и запустить с нуля.
Только через ихний фирменный BSP Cloning Wizard и демки.


Цитата(Golikov A. @ Apr 8 2015, 21:40) *
Кортексов М и АРМ7 например по разному сделаны прерывания, и это может отличать операционку для АРМ просто от операционки для кортекса.


Да кстати, может вы не в курсе, но и в FreeRTOS и в MQX есть выбор ядра от ARM7 до Cortex-Ax

Но только вы подите найдите где и что точно в исходниках надо подправить чтобы компилось под нужное ядро.
Только демки вам в этом помогут!
Golikov A.
ну так я надеялся что FreeRTOS собрана под разные ядра... как обещающая и особо заточенная... но видать нет...
A. Fig Lee
Цитата(Golikov A. @ Apr 8 2015, 14:40) *
Вот же блин же...
мне не нужны все эти драйверы, и периферия. От операционки мне надо чтобы она задачи переключала, а все остальное я сам напишу. Как то это все не дружелюбно для пользователя...


То, что вы хотите, реализовано в кокосе. Пара килобайт весь код, заточен под кортекс, на ассемблере переключается,
имеет только примитивы синхронизации, никаких драйверов.
Надумаете, пальцем ткну где я там баги нашел.

Вам может и так сойдет, у нас работает на 1 миллисекунд тик, хорошо загружена.
den_po
Цитата(Golikov A. @ Apr 9 2015, 01:11) *
ну так я надеялся что FreeRTOS собрана под разные ядра... как обещающая и особо заточенная... но видать нет...

Ну дык ответили ж вам - всё необходимое есть в папке source.
От вас требуется настроить FreeRTOSConfig.h и вызвать vTaskStartScheduler(). Ну и стартап в некоторых случаях в демке подглядеть.
Если не нравится, на каких таймерах висит переключалка задач, тут уже надо будет лезть в папочку port.
Golikov A.
Цитата
То, что вы хотите, реализовано в кокосе. Пара килобайт весь код, заточен под кортекс, на ассемблере переключается,
имеет только примитивы синхронизации, никаких драйверов.
Надумаете, пальцем ткну где я там баги нашел.

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

Цитата
Ну дык ответили ж вам - всё необходимое есть в папке source.
От вас требуется настроить FreeRTOSConfig.h и вызвать vTaskStartScheduler(). Ну и стартап в некоторых случаях в демке подглядеть.
Если не нравится, на каких таймерах висит переключалка задач, тут уже надо будет лезть в папочку port.

Не..., мне ответили что надо будет брать чужую демку и фильтровать что от демки что от ядра и что там все скручено, так что никогда не заработает сразу, даже если проц совпадет...

Вот если мне все нравиться по умолчанию, и я не хочу никуда лезть, мне казалось логичнее взять исходник, а то вдруг автор демки куда то полез и что-то уже поправил. В случае если я возьму прям с сайта ртос.орг, много ли надо доделывать чтобы оно все завелось? Просто оценочно.
den_po
Цитата(Golikov A. @ Apr 9 2015, 08:49) *
Не..., мне ответили что надо будет брать чужую демку и фильтровать что от демки что от ядра и что там все скручено, так что никогда не заработает сразу, даже если проц совпадет...

http://electronix.ru/forum/index.php?s=&am...t&p=1328460

Цитата(Golikov A. @ Apr 9 2015, 08:49) *
Вот если мне все нравиться по умолчанию, и я не хочу никуда лезть, мне казалось логичнее взять исходник, а то вдруг автор демки куда то полез и что-то уже поправил. В случае если я возьму прям с сайта ртос.орг, много ли надо доделывать чтобы оно все завелось? Просто оценочно.

См. мой предыдущий ответ.
Golikov A.
блин я пропустил этот ответ.

То есть я беру из сорс голую систему, пихаю в проект, правлю конфиг, настраиваю свою периферию, запускаю vTaskStartScheduler() и поехали?
Дальше останется только добавлять таски?

Сколько занимает такой старт на голом проце? Ведь в целом так же можно описать и запуск линуксаsm.gif
aaarrr
Цитата(Golikov A. @ Apr 9 2015, 10:11) *
То есть я беру из сорс голую систему, пихаю в проект, правлю конфиг, настраиваю свою периферию, запускаю vTaskStartScheduler() и поехали?
Дальше останется только добавлять таски?

Именно.

Цитата(Golikov A. @ Apr 9 2015, 10:11) *
Сколько занимает такой старт на голом проце? Ведь в целом так же можно описать и запуск линукса sm.gif

На Cortex-M пару часов в знакомой среде. Некоторой внимательности требует только настройка контроллера прерываний.
LightElf
QUOTE (Golikov A. @ Apr 8 2015, 23:11) *
ну так я надеялся что FreeRTOS собрана под разные ядра... как обещающая и особо заточенная... но видать нет...

Что значит "собрана под разные ядра"? FreeRTOS поставляется в исходниках. Заметная часть функционала выполнена на макросах, поэтому ее нельзя собрать в библиотеку.
Каталог FreeRTOS\Source содержит исходники кернела. По-минимуму это файлы list.c queue.c tasks.c. Есть еще croutine.c и timers.c - на любителя. Каталог FreeRTOS\Source\portable содержит кусочки, специфичные для конкретного компилятора и ядра. Например FreeRTOS\Source\portable\IAR\ARM_CM3 содержит специфичный код для Cortex-M3 с компилятором IAR. Каталог FreeRTOS\Source\portable\MemMang содержит 4 варианта менеджера памяти. Нужно выбрать один, в доке описаны отличия. Для первого запуска достаточно heap_1.c. Дальше берете FreeRTOSConfig.h из примерно похожей демки, правите под свои потребности - и вуаля.
Golikov A.
Ну что же, всем спасибо за беседу, попробуем запустить FreeRTOS, а там видно будет.

Под собрана, я имел ввиду собраны исходники, ну собственно как и есть, это типа "FreeRTOS\Source\portable\IAR\ARM_CM3"....



adnega
Цитата(Golikov A. @ Apr 9 2015, 11:04) *
Ну что же, всем спасибо за беседу, попробуем запустить FreeRTOS, а там видно будет.

Мне в свое время очень помогли статьи А. Курница о FreeRTOS. Советую.
den_po
Цитата(Golikov A. @ Apr 9 2015, 11:11) *
То есть я беру из сорс голую систему, пихаю в проект, правлю конфиг, настраиваю свою периферию, запускаю vTaskStartScheduler() и поехали?
Дальше останется только добавлять таски?

vTaskStartScheduler() возвращает управление только при ошибках либо если какая-то задача принудительно останавливает планировщик, поэтому хотя бы одну свою задачу стоит создавать ДО её вызова
MiklPolikov
Цитата(AHTOXA @ Apr 6 2015, 18:05) *
Выскажусь тоже.
С тех пор, как я попробовал использовать RTOS (scmRTOS) в микроконтроллерах, я делаю все проекты только с RTOS.
Сейчас, когда приходится возвращаться к старым безосевым проектам для сопровождения, ужасаюсь этой мешанине коллбэков, машин состояний, конечных автоматов и вызовов их обработчиков из суперлупаsm.gif


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

Недавно до конца освоил спящие режимы процессора. Теперь в задаче бездействия процессор уходит в разные режимы сна в зависимости от необходимой на данный момент мин.частоты. Прерывание по таймеру RTC "заводится" на время, когда должна быть пробуждена ближайшая ждущая чего-то задача. После пробуждения системное время модифицируется, что бы задачи, в которых были таймеры, не заметили засыпания.
alexunder
Цитата(adnega @ Apr 9 2015, 10:08) *
Мне в свое время очень помогли статьи А. Курница о FreeRTOS. Советую.

Спасибо! Думаю надо с чего-то начинать, пусть будет FreeRTOS. На 51 sm.gif
Сергей Борщ
Цитата(alexunder @ Apr 10 2015, 08:46) *
пусть будет FreeRTOS. На 51 sm.gif
Может стоит начать с замены 51 на что-то более современное и подходящее для ОС? wink.gif
SM
Цитата(Сергей Борщ @ Apr 10 2015, 10:12) *
Может стоит начать с замены 51 на что-то более современное и подходящее для ОС? wink.gif

Вообще, переключение контекста на 51 чуть ли не самое быстрое из возможных, пока в пределах 4 банков sm.gif
AlexandrY
Цитата(SM @ Apr 10 2015, 10:55) *
Вообще, переключение контекста на 51 чуть ли не самое быстрое из возможных, пока в пределах 4 банков sm.gif


Ага, как же
Во FreeRTOS из 51-х есть только Cygnal и сохранение контекста там выглядит так:

Код
/*
* Macro to push the current execution context onto the stack, before the stack
* is moved to XRAM.
*/
#define portSAVE_CONTEXT()                                                                        \
{                                                                                                \
    _asm                                                                                        \
        /* Push ACC first, as when restoring the context it must be restored                    \
        last (it is used to set the IE register). */                                            \
        push    ACC                                                                                \
        /* Store the IE register then disable interrupts. */                                    \
        push    IE                                                                                \
        clr        _EA                                                                                \
        push    DPL                                                                                \
        push    DPH                                                                                \
        push    b                                                                                \
        push    ar2                                                                                \
        push    ar3                                                                                \
        push    ar4                                                                                \
        push    ar5                                                                                \
        push    ar6                                                                                \
        push    ar7                                                                                \
        push    ar0                                                                                \
        push    ar1                                                                                \
        push    PSW                                                                                \
    _endasm;                                                                                    \
        PSW = 0;                                                                                \
    _asm                                                                                        \
        push    _bp                                                                                \
    _endasm;                                                                                    \
}


Создатели RTOS-в вообще не выносят всяких аппаратных особенностей.
В этом плане говорить что FreeRTOS под что-то заточена немного смешно.
alexunder
Цитата(Сергей Борщ @ Apr 10 2015, 09:12) *
Может стоит начать с замены 51 на что-то более современное и подходящее для ОС? wink.gif

Господа, спасибо за комментарии.
Ясно что 51 не самый лучший кандидат для ОС, мягко говоря. Но у меня оригинальная демоборда от Silabs F321 лежит без дела. Пусть там 25МГц вместо 100МГц, но попробовать стоит.
SM
Цитата(AlexandrY @ Apr 10 2015, 11:24) *
Создатели RTOS-в вообще не выносят всяких аппаратных особенностей.

Именно поэтому, грамотное портирование - дело тонкое, долгое и муторное. Для того же 51, например, очень выгодно использовать 4 аппаратных контекста, и только, когда их не хватает, лить все валом в стек. Если авторам РТОС это не понятно - значит нафиг такую РТОС для такого ядра вместе с ее авторамию...

Цитата(AlexandrY @ Apr 10 2015, 11:24) *
В этом плане говорить что FreeRTOS под что-то заточена немного смешно.

И я и не говорю про заточенность.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.