Jump to content

    

Операционная система.

Приветствую!

Просматривая темы форума, у меня сложилось мнение, что многие используют сгенерированные демо-проекты. Когда задействуется только один ресурс, всё работает хорошо. Но когда задействованных ресурсов более, чем один, начинаются зависания. Всё, как на СodeVision AVR в давние времена. Это и подвигло меня, в своё время,  написать собственный диспетчер многозадачности, который я использовал много лет. Много чего полезного было написано. Но было бы глупо эти наработки переносить на ARM. В моих проектах одновременно работают оба UART, CAN, I2C  и никаких зависаний. От ARM требуется ещё Ethernet. Нужно ли ARM изучать с самого низа, или можно писать на верхнем уровне с расчётом на OS? Очень много времени потратил на то, чтобы пройти AVR от низа до верха. Столько времени у меня уже не осталось. Для того и придумали OS, чтобы не изобретать то, что было уже изобретено и не один раз. Ведь пишут же люди программы для Windows на C Builder, не имея ни малейшего представления о том, как работает компьютер! Более того, старые программы, которые напрямую обращались к регистрам устройств, на современных Виндах не работают. В современных условиях всё только через системные функции. Дошёл ли ARM до этого? Или до этого ещё далеко и старый Modbus/master надо писать ручками?   

Share this post


Link to post
Share on other sites
10 hours ago, Д_М said:

Или до этого ещё далеко и старый Modbus/master надо писать ручками?   

Прям весь Modbus ручкам писать не придется конечно. Но редактировать надо будет в части взаимодействия с верхним и нижним уровнем. 
К сожалению у ARM микроконтроллеров по прежнему полный хаос сверху и снизу. 
Сверху - это разные  оси типа FreeRTOS, mbed,  Zephyr ... Снизу разная архитектура периферии от ST, TI, NXP... с абсолютно разными API  да и сами ядра ARM сейчас расплодились.

Единственно что остается делать - искать наиболее интегрированное решение из одних рук. 
mbed - слишком кросплатформенный, из-за этого теряете преимущества архитектуры. FreeRTOS - слишком мало функционально. Zephyr - сложно собирается и отлаживается поскольку не адаптирован ни к каким IDE.  

На сегодня лучшим решением будет платформа  Renesas Sinergy. Она включает чипы на базе ARM Cortex-M4 до 240 МГц, операционку ThreadX (с недавнего времени принадлежит Microsoft) и пакет софта SSP в который входит вот все что нужно современному микроконтроллеру и IDE от IAR. Весь софт и IDE бесплатно.

В этой среде вы пожалуй сможете начать программировать так как в  C Builder. Весь хелп из одного источника. Сетевой стек дает все что нужно: от драйвера Ethernet до прикладных API работы с FTP, WEB, DNS, SNMP и проч. Есть мощный движок GUI c дизайнером окон. Есть файловая система с защитой от сбоев и FTL уровнем для NAND и NOR. Есть протоколы IoT и скоро их там станет еще больше. 
Довольно стройная и консистентная линейка драйверов для UART, USB, SPI, I2C, I2S, CAN и проч. 
В среде IAR качественный add-on для отладки ThreadX, также есть бесплатный трассер для ThreadX для разбора межзадачного взаимодействия и анализа нагрузок. 

Короче, есть варианты. 

Share this post


Link to post
Share on other sites
On 4/23/2019 at 12:03 PM, Д_М said:

Дошёл ли ARM до этого? Или до этого ещё далеко и старый Modbus/master надо писать ручками?   

ARM это широкое понятие и никак не соотносится с ModBus. Готовый "стек"( стек громко сказано) работы с ModBus можно запустить и на AVR и PIC ограничения только в ресурсах микроконтроллера.

On 4/23/2019 at 12:03 PM, Д_М said:

Нужно ли ARM изучать с самого низа, или

Нужно знать особенности ядра (32битная архитектура, используемые регистры, стеки MSP, PSP), знать нюансы работы с контроллером прерываний, понимать как обрабатывать XXX_fault ы , знать о таких хардварных ускорителях как prefetch, cache, понимать что из cебя представляют MProtectionU, MMU. А дальше, уже по мере необходимости посматривать в даташит на периферию и примеры работы с ней.

On 4/23/2019 at 12:03 PM, Д_М said:

Ведь пишут же люди программы для Windows на C Builder, не имея ни малейшего представления о том, как работает компьютер!

Есть разработчики которые пишут прикладное ПО для Windows, есть те кто разрабатывает драйвера или ядро Windows. Одни могут не понимать как работает компьютер, вторые же, без этих знаний работать не смогут. Тоже самое с микроконтроллерами Вы можете использовать готовый стек работы с каким либо железом и не заморачиваться, при этом будите ограничены предоставляемым функционалом и возможно даже не потеряете в производительности. Все зависит от вашей задачи и условий...

On 4/23/2019 at 12:03 PM, Д_М said:

Для того и придумали OS, чтобы не изобретать то, что было уже изобретено и не один раз.

OS в мире микроконтроллеров в своем большинстве, предоставляют только механизм реализации потоков(задач) + набор механизмов для взаимодействия между потоками(очереди, мьютексы, события, критические секции и тд). Да есть OS с прикрученными (или дополнениями) типо file system и sockets с очень схожим API но нигде нет стандатрного интерфейса работы с например PWM, I2C и тем же MAC для ethernet. По этому ваша высокоуровневая логика обычно требует еще слой абстракции для безболезненного переноса с одного контроллера на другой, если конечно, в этом есть необходимость


 

Share this post


Link to post
Share on other sites
23 minutes ago, Integro said:

Да есть OS с прикрученными (или дополнениями) типо file system и sockets с очень схожим API но нигде нет стандатрного интерфейса работы с например PWM, I2C и тем же MAC для ethernet. По этому ваша высокоуровневая логика обычно требует еще слой абстракции для безболезненного переноса с одного контроллера на другой, если конечно, в этом есть необходимость

Тут тогда надо добавить, что как и в PC в микроконтроллерах тренды идут абстрагировать не периферию, а задачи периферии.
Не PWM абстрагируют, а управление моторами или DC/DC преобразователями. 
Не I2C абстрагируют,  а хабы датчиков. Не MAC, а сетевые протоколы.
Поэтому при известной степени упорности можно обойтись без изучения регистров периферии сидя просто на фреймворках типа Renesas Synergy SSP.

     

Share this post


Link to post
Share on other sites
On 4/23/2019 at 10:48 PM, AlexandrY said:

 FreeRTOS - слишком мало функционально.

А какой функциональности не хватает у FreeRTOS ?

 

Я почему спрашиваю. Был у меня проект с FreeRTOS.  Я использовал там ну может 10 5 процентов всей функциональности. Хотел включить что нибудь еще, чисто для учебы, не додумался что еще туда впендюрить. А так хотелось поучить возможности операционки.

Более того, сейчас есть серьезный проект на VxWorks. Использую ту же функциональность.

 

Edited by jenya7

Share this post


Link to post
Share on other sites

Во первых VxWorks есть несколько веток для MMU процессоров и для без MMU. Второе есть открытое и можно посмотреть в  Zephyr-е.
А первое эт все равно что линукс только закрытое и огромное значение имеет состав купленных компонентов. 
Та что сказать "серьезный проект на VxWorks" будет как пальцем в небо. 
А во FreeRTOS не то что чего-то не хватает. Там вообще ничего нет. Эт голый примитивный шедулер. 

Share this post


Link to post
Share on other sites
1 hour ago, AlexandrY said:

Во первых VxWorks есть несколько веток для MMU процессоров и для без MMU. Второе есть открытое и можно посмотреть в  Zephyr-е.
А первое эт все равно что линукс только закрытое и огромное значение имеет состав купленных компонентов. 
Та что сказать "серьезный проект на VxWorks" будет как пальцем в небо. 
А во FreeRTOS не то что чего-то не хватает. Там вообще ничего нет. Эт голый примитивный шедулер. 

Так а что еще надо? Мне как то его хватало выше крыши. Дайте ссылку на какой нибудь туториал, может я что то упускаю. Что я такого должен заюзать в эмбедед проекте чтоб сказать - а подать мне сюда Ляпкина-Тяпкина серьезную ось.

Edited by jenya7

Share this post


Link to post
Share on other sites
20 минут назад, jenya7 сказал:

Так а что еще надо? Мне как то его хватало выше крыши. Дайте ссылку на какой нибудь туториал, может я что то упускаю. Что я такого должен заюзать в эмбедед проекте чтоб сказать - а подать мне сюда Ляпкина-Тяпкина серьезную ось.

Я не вкурсе про FreeRTOS  , там файловые системы есть ? На каком уровне обмен по сети поддержан?

Share this post


Link to post
Share on other sites
1 hour ago, Lmx2315 said:

Я не вкурсе про FreeRTOS  , там файловые системы есть ? На каком уровне обмен по сети поддержан?

Не знаю про все файловые системы но с FatFS работает. И LWIP интегрирован. А даже если нет? что нельзя разрулить стак тасками и семафорами?

Edited by jenya7

Share this post


Link to post
Share on other sites
4 минуты назад, jenya7 сказал:

Не знаю про все файловые системы но с FatFS работает. И LWIP интегрирован. А даже если нет? что нельзя разрулить стак тасками и семафорами?

С таким подходом зачем спрашивать "чего не хватает" ? Можно всё baremetal делать.

Share this post


Link to post
Share on other sites
1 hour ago, Lmx2315 said:

С таким подходом зачем спрашивать "чего не хватает" ? Можно всё baremetal делать.

Поэтому и спрашиваю. Чтоб изучить возможности. Новые горизонты.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this