|
|
  |
nanoKernel for the AT90S1200, Зачем это надо в принципе? |
|
|
|
Nov 13 2006, 11:05
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Чтобы не плодить много бесплодных постов(:-), соберу все в один и попробую ответить всем сразу. Вопрос был такой. Зачем в принципе нужна в малоресурсном микроконтроллере кооперативная ОС? На мой взгляд, ОС нужна, чтобы облегчить жизнь пользователю данной системы, помочь ему комфортно запускать разные задачи и работать с ними, как в ДОС или в Виндоуз. А у микроконтроллера, в основном, есть одна задача и она, как правило, не меняется за время жизни МК (я не беру в расчет обновления). Как спрашивается в анекдоте, Моня, зачем нам эти шутки? Цитата(defunct @ Nov 10 2006, 21:46)  перечитайте еще раз это: Цитата С другой стороны, если Вы ещё не чувствуете острой необходимости применения какой либо ОС, то и не применяйте. ОС понятие растяжимое, в контексте МК с крошечным объемом памяти как в S1200 в роли ОС может выступать некий шаблон кода или модуль, который просто упростит Вам жизнь тем, что возьмет на себя ответственность за обслуживание портов I/O и за запуск некоторых функций обработчиков по некоторым событиям. Вам же останется лишь задать события и написать те самые функции обработчики. Я вас умоляю! Ответственность за обслуживание портов! Это одна строка кода, какая ответственность? Что я не так напишу строку кода, или что? Пока я не чувствую необходимости применения ОС, пока я чувствую необходимость обсуждения вопроса применения миниОС в МК(:-). Цитата(defunct @ Nov 10 2006, 21:46)  Конечно, может быть в том есть особый кайф если для каждого проекта заново описывать работу с УАРТом, таймерами, продумывать планировщик задач и т.п. Говоря Вашими словами: но я на самом деле не понимаю необходимости переписывания одного и того же несколько раз на год, когда можно применить уже готовую ОС. Нечто сродни изобретению велосипеда получается. Кто мешает скопировать все процедуры инициализации, работы с уартом, таймерами из предыдущего проекта, как вы предлагаете сделать с ОС? Цитата(defunct @ Nov 11 2006, 22:31)  Цитата Пытаюсь понять, зачем в принципе нужна в малоресурсном микроконтроллере кооперативная ОС? Ответ на этот вопрос в этой ветке уже был дан Вот только не надо надувать щеки(:-). Не хочу никого обидеть, ответа я не заметил. Можете привести конкретный пример из вашей практики, или два, чтобы прочувствовать, как много надо было бы писать, переходя с проекта на проект, не имея готовую ОС под рукой? Цитата(defunct @ Nov 11 2006, 22:31)  А с вопросом "куда катится мир?" вы обратились явно не по адресу. Вам лучше ответят в форумах по философии. Других вопросов я здесь не заметил. Вопрос "куда катится мир?" был задан именно о применении ОС в микроконтроллерах, а не в общефилософском смысле. Все и так знают, что мир катится к гибели(:-(. Каждый день. Цитата(Alex B._ @ Nov 12 2006, 00:25)  Интересно, как вы поняли, что эта идея экзотическая, если до этого не использовали ни вытесняющую, ни кооперативную ось? Я нигде не видел похожего, пришлось придумывать самому. Да и ничего там сложного не было. По сравнению с применением Осей(:-). Подробнее чуть ниже. Цитата(bodja74 @ Nov 12 2006, 14:45)  Думаю экзотика заключается в их неприменении.  Делаем программный или ставим в позу аппаратный стек и говорим бай-бай всем осям. =GM= я правильно угадал Ваш способ, или мне опять прийдется за пивом сбегать?  Вы как-то туманно выражаетесь(:-), мне бы поузить... Идея заключалась в разбиении всех процессов на регулярные и нерегулярные части, регулярные части присутствовали в каждом фрагменте, нерегулярные – только в одном или нескольких фрагментах, и каждая часть самостоятельно решала, кому отдать управление в следующем фрейме. В моем случае все фрагменты удалось привести к единой временной базе в 800 МЦ, хотя можно сделать и на переменной базе. Зависит от задачи. Виртуального пива нам пока хватит с того проекта, я вам там довел дело до 8 МЦ, а вы куда-то пропали…Решили, видимо, ограничить виртуальные пивные расходы(:-). Цитата(pitt @ Nov 12 2006, 22:20)  Классик-баснописец сказал: "Беда, коль сапоги начнет тачать пирожник, а пироги печи - сапожник"! Когда инженер-электрик берется программировать - это пол-беды, а вот когда он же берется учить программированию других - совсем беда! Чёт я не понял, это камень в чей огород(:-)? Если в мой, то я не собираюсь никого учить, кто бы меня научил, что правильно, а что нет. Приходится до всего доходить своим умом, иногда ум заходит за разум, становится совсем не виден(:-). Вторая часть вашего поста весьма примечательна. Низ-зя программить инженерам-электрикам? А кому можно? У кого есть сертификат? У меня есть, выдан Тексас Инструментом, учился в ихнем филиале в Нортхемптоне. Но не вижу никакого криминала(:-), если кто-то, не имея никакого сертификата и зная больше меня в данной области, покажет мне (и остальным участникам форума), как программить, новые приемы, нестандартное решение проблемы...
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Nov 13 2006, 14:47
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672

|
Цитата(=GM= @ Nov 13 2006, 07:05)  Вторая часть вашего поста весьма примечательна. Низ-зя программить инженерам-электрикам? А кому можно? У кого есть сертификат? У меня есть, выдан Тексас Инструментом, учился в ихнем филиале в Нортхемптоне. Но не вижу никакого криминала(:-), если кто-то, не имея никакого сертификата и зная больше меня в данной области, покажет мне (и остальным участникам форума), как программить, новые приемы, нестандартное решение проблемы... По поводу сертификатов: Наличие прав на управление автомобилем вовсе не означает умения это делать!
--------------------
|
|
|
|
|
Nov 13 2006, 16:16
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(pitt @ Nov 13 2006, 14:47)  Цитата(=GM= @ Nov 13 2006, 07:05)  Вторая часть вашего поста весьма примечательна. Низ-зя программить инженерам-электрикам? А кому можно? У кого есть сертификат? У меня есть, выдан Тексас Инструментом, учился в ихнем филиале в Нортхемптоне. Но не вижу никакого криминала(:-), если кто-то, не имея никакого сертификата и зная больше меня в данной области, покажет мне (и остальным участникам форума), как программить, новые приемы, нестандартное решение проблемы...
По поводу сертификатов: Наличие прав на управление автомобилем вовсе не означает умения это делать! to pitt По поводу прав на управление автомобилем. Тут вы в корне неправы, наличие прав на управление как раз и означает, что владелец может управлять автомобилем в приемлемых для государства рамках, и государство официально подтверждает его умение. Шут с ним с сертификатом, у меня и похлеще есть(:-). Лучше поясните, к чему вы сказали про сапоги и пирожника, и про инженера-электрика, который берется программировать? А то я теряюсь в догадках(:-). Ваши два поста, уважаемый, и есть тот самый пресловутый флейм, о котором предупреждал модератор. Давайте не будем продолжать в том же ключе.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Nov 13 2006, 16:34
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(_artem_ @ Nov 13 2006, 15:23)  =GM=, поскольку Вы обременены вопросом "как бы ОС поюзить", то она Вам не нужна . А когда нужна будет - тогда юзать и будете.)
Один пример - в системе будут четыре задачи , одна задача постоянно выполняется но может прерываться, вторая задача сродни первой , третья и четвертая задачи требует быстрого реагирования на события , которые нельзя реализовать в прерываниях из-за длительности выполнения, так как вложенные прерывания могут привести к переполнению стека. Можно ли это ЛЕГКО сделать без применения ртосоподобного подхода? Ну не так сильно "обременён", как вам кажется, это сильно сказано! Кстати, так уже говорили, не повторяйтесь. Если она мне пока не нужна, почему я не могу к ней подступиться прямо сейчас? Может быть, это как раз начало моей нужды в ОС, почём знать? Должен я держать нос по ветру, э(:-)? Если под быстрым реагированием вы имеете в виду выставление прерыванием флага события, чтобы потом ОС могла передать управление соответствующей программе, то ДА, это можно ЛЕГКО сделать без применения ОС. И даже в прерывании. И с помощью ОС этого нельзя сделать быстрее, можно только замедлить в два-три раза. Увы. Я хочу понять, какие преимущества дает карманная ОС, или это фикция, дань моде?
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Nov 13 2006, 16:46
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(=GM= @ Nov 13 2006, 14:05)  Я вас умоляю! Ответственность за обслуживание портов! Это одна строка кода, какая ответственность? Что я не так напишу строку кода, или что? Пока я не чувствую необходимости применения ОС, пока я чувствую необходимость обсуждения вопроса применения миниОС в МК(:-). Порты в контексте ОС это не GPIO. Это вся имеющаяся периферия. Цитата Можете привести конкретный пример из вашей практики, или два, чтобы прочувствовать, как много надо было бы писать, переходя с проекта на проект, не имея готовую ОС под рукой? задачка-пример: В процессе выполнения некоторых чередующихся сложных функций - зажечь и потушить через определенное время любую комбинацию из 10 светодиодов. Функции задержки применять нельзя. Дополнительное условие задачи - программа без существенных изменений структуры должна поддерживать работу с индикатором (из тех же 10-ти светодиодов) через UART/SPI/I2C.
|
|
|
|
|
Nov 13 2006, 16:47
|

учащийся
    
Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249

|
Цитата(=GM= @ Nov 13 2006, 18:34)  Цитата(_artem_ @ Nov 13 2006, 15:23)  =GM=, поскольку Вы обременены вопросом "как бы ОС поюзить", то она Вам не нужна . А когда нужна будет - тогда юзать и будете.)
Один пример - в системе будут четыре задачи , одна задача постоянно выполняется но может прерываться, вторая задача сродни первой , третья и четвертая задачи требует быстрого реагирования на события , которые нельзя реализовать в прерываниях из-за длительности выполнения, так как вложенные прерывания могут привести к переполнению стека. Можно ли это ЛЕГКО сделать без применения ртосоподобного подхода?
Ну не так сильно "обременён", как вам кажется, это сильно сказано! Кстати, так уже говорили, не повторяйтесь. Если она мне пока не нужна, почему я не могу к ней подступиться прямо сейчас? Может быть, это как раз начало моей нужды в ОС, почём знать? Должен я держать нос по ветру, э(:-)? Если под быстрым реагированием вы имеете в виду выставление прерыванием флага события, чтобы потом ОС могла передать управление соответствующей программе, то ДА, это можно ЛЕГКО сделать без применения ОС. И даже в прерывании. И с помощью ОС этого нельзя сделать быстрее, можно только замедлить в два-три раза. Увы. Я хочу понять, какие преимущества дает карманная ОС, или это фикция, дань моде? А что если при прерывании предназначенном для задачи номер 3 или 4 , работает задача номер 1 или 2? Вы то после прерывания не вытесняете медленную задачу 1 или 2 и она продолжает работать как и обычно до прерывания. П.С. Не смотрел что пишут другие , не люблю плагиат.)
--------------------
Зачем лаять на караван , когда на него можно плюнуть?
|
|
|
|
|
Nov 13 2006, 19:55
|

Знающий
   
Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274

|
Карманная РТОС дает прежде всего удобство и в разы сокращает время на написание кода. Просто почитайте документацию на ось какую-нить внимательно, вдумчиво поймите, какие методы синхронизации предоставляют основные сервисы и пишите, как писали. В один прекрасный момент поймете, что изобрели велосипед, придумав, например, очередь сообщений, и решите, что ось это хорошо. А пока это просто разговор на разном языке - вы не понимаете зачем это, а люди которые оси используют для однокристаллок не понимают как вы можете их НЕ использовать и пытаются что-то до вас донести... При этом вы постоянно оппонируете, не желая вслушаться в то, что вам втирают...
|
|
|
|
|
Nov 13 2006, 21:52
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672

|
Цитата(=GM= @ Nov 13 2006, 12:16)  Давайте не будем продолжать. Давайте. Цитата( @ Nov 13 2006, 12:16) Просто почитайте документацию на ось какую-нить внимательно, вдумчиво поймите, какие методы синхронизации предоставляют основные сервисы и пишите, как писали. Цитата( @ Nov 13 2006, 12:16) П.С. Не смотрел что пишут другие , не люблю плагиат.)
Сообщение отредактировал pitt - Nov 13 2006, 21:55
--------------------
|
|
|
|
|
Nov 14 2006, 10:52
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(defunct @ Nov 13 2006, 16:46)  Цитата(=GM= @ Nov 13 2006, 14:05)  Я вас умоляю! Ответственность за обслуживание портов! Это одна строка кода, какая ответственность? Что я не так напишу строку кода, или что? Пока я не чувствую необходимости применения ОС, пока я чувствую необходимость обсуждения вопроса применения миниОС в МК(:-).
Порты в контексте ОС это не GPIO. Это вся имеющаяся периферия. Цитата Можете привести конкретный пример из вашей практики, или два, чтобы прочувствовать, как много надо было бы писать, переходя с проекта на проект, не имея готовую ОС под рукой? задачка-пример: В процессе выполнения некоторых чередующихся сложных функций - зажечь и потушить через определенное время любую комбинацию из 10 светодиодов. Функции задержки применять нельзя. Дополнительное условие задачи - программа без существенных изменений структуры должна поддерживать работу с индикатором (из тех же 10-ти светодиодов) через UART/SPI/I2C. Про порты вы сказали "порты I/O", а сейчас говорите "Порты это не GPIO, а вся имеющаяся периферия". Где правильно? Вот пример - это уже ближе к делу. Зажечь и потушить через определенное время любую комбинацию из 10 светодиодов на фоне сложных функций - это не просто, а очень просто, менее 30 МЦ в прерывании! Здесь ОС просто не нужна. Без нее будет быстрее и ресурсов будет потребляться меньше! Также и в отношении работы с индикатором через UART/SPI/I2C. Не видно преимущества применения ОС, хотя, возможно, был выбран неудачный пример?
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Nov 14 2006, 13:48
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Отвечу скопом(:-) Цитата(Alex B._ @ Nov 13 2006, 19:55)  Карманная РТОС дает прежде всего удобство и в разы сокращает время на написание кода. Просто почитайте документацию на ось какую-нить внимательно, вдумчиво поймите, какие методы синхронизации предоставляют основные сервисы и пишите, как писали. Хорошо, вы меня уговорили. Порекомендуйте “ось какую-нить” достойную по-вашему мнению к изучению, я посмотрю и тогда, может быть, вернемся к теме необходимости использования ОС в МК. Пока я не вижу “разов” даже на пальцах(:-). Цитата(Alex B._ @ Nov 13 2006, 19:55)  В один прекрасный момент поймете, что изобрели велосипед, придумав, например, очередь сообщений, и решите, что ось это хорошо. А пока это просто разговор на разном языке - вы не понимаете зачем это, а люди которые оси используют для однокристаллок не понимают как вы можете их НЕ использовать и пытаются что-то до вас донести... При этом вы постоянно оппонируете, не желая вслушаться в то, что вам втирают... 1) Да желаю я, же-ла-ю. Пока только один defunct привел пример, крайне неудачный на мой взгляд, который работает скорее против ОС, чем за. 2) И не оппонирую я, задал простой вопрос, на который пока не получил внятного ответа, только отписки для галочки(:-). Вопрос-то простой. Цитата(_artem_ @ Nov 13 2006, 15:23)  Один пример - в системе будут четыре задачи , одна задача постоянно выполняется но может прерываться, вторая задача сродни первой , третья и четвертая задачи требует быстрого реагирования на события , которые нельзя реализовать в прерываниях из-за длительности выполнения, так как вложенные прерывания могут привести к переполнению стека. Можно ли это ЛЕГКО сделать без применения ртосоподобного подхода? Думаю, что легче, чем с ОС или РТОС. Почему-то все думают, что программирование начинается с написания строчек кода, а заканчивается, когда транслятор не выдал ошибок трансляции. Также все почему-то думают, что применение модной “миниОС” в микроконтроллере автоматически решит все их проблемы. Не решит, а добавит! По крайней мере, абсолютно точно в плане быстродействия. Цитата(haker_fox @ Nov 14 2006, 07:07)  2GM: не обижайтесь, но Вы просто не доросли до уровня понимания понимания данной темы... Может не дорос, а может и перерос уже(:-). Вы тоже не обижайтесь, как вы определяете, кто дорос, а кто нет? Как у вас было с ОС, вы утром встали, позавтракали, пришли на работу и внедрили ОС? Не сомневаясь, ни с кем не обсуждая, так? Цитата(haker_fox @ Nov 14 2006, 07:07)   Я вот тоже раньше не понимал зачем нужны простейшие тригонометрический функций (sin, cos, tg), пока не столкнулся вплотную с механикой в институте... теперь понял) а до этого никак. Прекрасно, рад за вас, серъезно. Мне в этом плане было легче. В свое время я считал и функции Бесселя сотого порядка и простые и модифицированные (и Неймана и Ханкеля тоже), и бесконечные ряды Пуассона доводилось, я уж не говорю про учет поправок между географической и сферической системой координат...Как сказал поэт: “все было брат со мной на этом белом свете и ездил я к одной на велосипеде”. Только вот все сказанное никакого отношения к теме не имеет(:-(. Цитата(mse @ Nov 14 2006, 11:58)  Да, просто пример неудачный. Единственно доступный для понимания вариант - пользовать чужие программы в своих устройствах. Как на писюке. Или свои в своих ;О)... В обчем, именно туда мир и катицца. И, получается, именно там ему и место. ;О) Пока и я так думаю. с другой стороны, зачем нужна ОС для использования своей программы в своем устройстве? Программа известна, полностью доступна, ну перетранслируй и вставь в свое устройство. В чем и где здесь кайф, никак не пойму. Но может все ж таки есть рациональное зерно в применении ОС? Наши оппоненты умнейшие люди, они ОС применяют without flinching так сказать, значит должно быть рациональное объяснение.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Nov 14 2006, 14:40
|

учащийся
    
Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249

|
Цитата Думаю, что легче, чем с ОС или РТОС. Почему-то все думают, что программирование начинается с написания строчек кода, а заканчивается, когда транслятор не выдал ошибок трансляции. Также все почему-то думают, что применение модной ”миниОС” в микроконтроллере автоматически решит все их проблемы. Не решит, а добавит! По крайней мере, абсолютно точно в плане быстродействия. Голословность утверждения не является аргуметном в дискуссии. Было бы интересно увидеть функциональный алгоритм в вашем изложении В моем изложении это будет так Код task_1() { for(;;) { // job 1 loop } }
task_2() { for(;;) { // job 2 logic } }
task_3() { for(;;) { // Wait for queue 3 // Handle data in queue 3 } }
task_4() { for(;;) { // Wait for queue 4 // handle data in queue 4 } }
isr_task_3() { // Post data to queue 3 }
isr_task_4() { // Post data to queue 4 }
// and nothing else - no task 3 and 4 related branching stuff wth predictable or unpredictable timing in task 1 and 2
--------------------
Зачем лаять на караван , когда на него можно плюнуть?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|