реклама на сайте
подробности

 
 
> Пишу ОС РВ, Вот пишу ОС Реального времени, у какого какие предложения? пожелания?
ddiimmaa
сообщение Jan 27 2009, 22:58
Сообщение #1


Участник
*

Группа: Validating
Сообщений: 27
Регистрация: 12-12-08
Из: Ижевск
Пользователь №: 42 419



Знаю, знаю дело не шибко благодарное. И люди могут тухлыми помидорами закидать. "Мол зачем ещё одна ОС?". Развелось тут понимаешь ОСеписателей.

В своё время был без ума от FreeRTOS. И всем она казалась хороша. Однако, покопавшись понял, что можно сделать немного по другому и немного лучше.

В общем моя цель добится примерно анологичной функциональности, но с меньшим числом затрачиваемой RAM ибо эта штука есть очень дефицитная ;-). Ну и сделать как можно открытие, чтобы можно было людям дописывать то, что им нужно самим.

Исходя из выше сказанного -- никаких POSIX, ну и сфера применения МК с ОЗУ от 512 до 256кбайт (ну выше там наверно что другое пойдёт).

У кого какие пожелания?

Наставления?

Мнения?

Вопросы?

что вы скажете по поводу выбора лиценции?

Что кому нравиться не нарвиться в их осях?


--------------------
Вот пишу ОС, может кому пригодиться ;-)
скачайте http://sourceforge.net/projects/irtos/
и вот сайт ещё http://irtos.sourceforge.net/
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sergeeff
сообщение Jan 28 2009, 00:35
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Это для общего развития или сейчас творческий простой?
Go to the top of the page
 
+Quote Post
ddiimmaa
сообщение Jan 28 2009, 17:15
Сообщение #3


Участник
*

Группа: Validating
Сообщений: 27
Регистрация: 12-12-08
Из: Ижевск
Пользователь №: 42 419



Цитата(sergeeff @ Jan 28 2009, 04:35) *
Это для общего развития или сейчас творческий простой?


Это нужен инструмент аля FreeRTOS но с меньшими аппетитами по RAM и с правом копаться в ядре, с тем чтобы получившееся можно было и в коммерческих разработках выдавать.

Цитата(MrYuran @ Jan 28 2009, 09:40) *
А scmRTOS?
Вроде бы как раз, для дохленьких контроллеров задумана, с полкилом рама, с минимизацией издержек.
Единственный минус (имхо) - написана на плюсах.
Хотя для кого-то это плюс.
По-моему, лучше подключиться к раскрученному проекту, чем начинать собственный с нуля


Вот вот в том то и дело что она Си плюс плюснутая. А так ничего ОC, правда тоже есть недочёты, в виде жёсткости системы приоритетов. Так например не может быть двух задач с одинаковыми приоритетами

Цитата(AlexandrY @ Jan 28 2009, 11:40) *
Ну покажите класс. Кто вас знает, мож вы гений. biggrin.gif
512 Kb RAM-а - это очень много. Не советую ориентироваться на такие числа.
Ограничтесь лучше 2-я Кб. Во всяком случае для uCOS, ThreadX, CMX и других мощных осей этого вполне хватает для пары тройки задач.

Ну конечно она должна влезать в сотни бацт по ОЗУ. Я это просто прикинул, что при 512 кб уже смысла нет ставить то, что я думаю
Цитата(AlexandrY @ Jan 28 2009, 11:40) *
Вообще-то нынче каждый уважающий себя компилер идет с встроенной RTOS.
У CodeWarrior - MQX, у Keil - RL ARM, у Tasking - OSE, у IAR - PowerPac и т.д


Ну судя этой логике gcc -- не уважающий себя компилер biggrin.gif
Цитата(AlexandrY @ Jan 28 2009, 11:40) *
Этой уникальной фичей мог бы стать realtime профайлер.
Все как бы декларируют себя RTOS-ами, но реального тулса для тюнинга приоритетов задач, нарезок временных интервалов активности задач, тюнинга шедулеров в готовом дивайсе никто не предлагает. Всегда нужен PC, софтварный спец агент тормозящий приложение и захватывающий ресурс и IDE online.


А можно по подробнее что есть realtime профайлер и какую статистику он должен собирать?
Цитата(AlexandrY @ Jan 28 2009, 11:40) *
Третья уникальная фича - проработка протокола вплоть до физического уровня межпроцессорного обмена.
Это оч востребованная фича, поскольку времена когда все делается на одном проце стремительно уходят.


Хм а вот тут тоже не совсем ясно? Что имееться в виду? Соединять несколько процов по какому-либо протоколу? С целью? Протокол обычно соответствует часто использемым функциям, т. е. реализует базовую функциональность чего-либо! А тут малость мне не понятно что может быть общего между различными устройствами в которых есть не один ЦП? И честно говоря, по этому ничего не видел ни инфы ни протоколов ни таких ОСей может подкините что-нибудь!

Цитата(zltigo @ Jan 28 2009, 13:09) *
Для "немного" того-другого просто надо доработать ту-же FreeRTOS. Хотели немножко памяти? - небольшие резервы по памяти там прямо под ногами лежат.


Можно можно, но вот в один прекрасный день (хотя у нас в России пока на это мало глядят) мне тут скажут "мужик -- ты же доработал FreeRTOS" -- ну тогда у тебя проект на GPL -- давай выкладывай все свои исходники.

Цитата(zltigo @ Jan 28 2009, 13:09) *
А при сильно сэкономить и сделать систему под 512 байт, так такая система будет уродлива уже для десяткокилобайтовых...

А как на ваш взгляд scmRTOS? Уродлива для десяткокилобайтовых?

Цитата(VslavX @ Jan 28 2009, 15:58) *
Дык, assert - для примера только. smile.gif Я текст с alloc() сразу поленился выложить. Так лучше?
Код
#if (DEBUG == 0)
#define MM_Alloc( a, b)                         \
         MM_AllocFree( a, b)
#else
#define MM_Alloc( a, b)                         \
         MM_AllocDebug( a, b, __LINE__, __FILE__)
#endif


Вот это да идея!!! первый раз такое вижу. Может буду применять. Честно говоря, меня шас память мало волнует. Больше приоритеты и прочее. И вообще мне не нравиться например что в FreeRTOS нельзя полностью работать на статической памяти.


--------------------
Вот пишу ОС, может кому пригодиться ;-)
скачайте http://sourceforge.net/projects/irtos/
и вот сайт ещё http://irtos.sourceforge.net/
Go to the top of the page
 
+Quote Post
VslavX
сообщение Jan 28 2009, 17:42
Сообщение #4


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Посмотрите TN Kernel
Написана на чистом C, "понятным языком", хорошо структурирована. API сделано "по мотивам" спецификации uTRON 4.x - на таких ОС японцы большую часть своей электроники делают. Приоритеты не фиксированы, есть round-robin для задач с одинаковым приоритетом, есть механизмы борьбы с priority inversion, достаточно быстрая. Я на ней остановился после знакомства с uCOS и FreeRTOS. Еще очень понравилась scmRTOS - изящнейшая вещь, но я не настолько уверено "++" владею, и, к сожалению, узнал о ней уже после значительного "перелопачивания" TN.
Go to the top of the page
 
+Quote Post
ddiimmaa
сообщение Jan 28 2009, 20:47
Сообщение #5


Участник
*

Группа: Validating
Сообщений: 27
Регистрация: 12-12-08
Из: Ижевск
Пользователь №: 42 419



Цитата(VslavX @ Jan 28 2009, 21:42) *
Посмотрите TN Kernel
Написана на чистом C, "понятным языком", хорошо структурирована. API сделано "по мотивам" спецификации uTRON 4.x - на таких ОС японцы большую часть своей электроники делают. Приоритеты не фиксированы, есть round-robin для задач с одинаковым приоритетом, есть механизмы борьбы с priority inversion, достаточно быстрая. Я на ней остановился после знакомства с uCOS и FreeRTOS. Еще очень понравилась scmRTOS - изящнейшая вещь, но я не настолько уверено "++" владею, и, к сожалению, узнал о ней уже после значительного "перелопачивания" TN.

посмотрел
Код
//----- Task Control Block ------------
typedef struct _TN_TCB
{
   unsigned int * task_stk;  //-- Pointer to task's top of stack
   CDLL_QUEUE task_queue;    //-- Queue is used to include task in ready/wait lists
   CDLL_QUEUE timer_queue;   //-- Queue is used to include task in timer(timeout,etc.) list
   CDLL_QUEUE block_queue;   //-- Queue is used to include task in blocked task list only
                               // uses for mutexes priority seiling protocol
   CDLL_QUEUE create_queue;  //-- Queue is used to include task in create list only
   CDLL_QUEUE mutex_queue;   //-- List of all mutexes that tack locked  (ver 2.x)
   CDLL_QUEUE * pwait_queue; //-- Ptr to object's(semaphor,event,etc.) wait list,
                               // that task has been included for waiting (ver 2.x)
   struct _TN_TCB * blk_task; //-- Store task,that blocked our task(for mutexes's
                               // priority ceiling protocol only (ver 2.x)

   unsigned int * stk_start;          //-- Base address of task's stack space
   int   stk_size;           //-- Task's stack size (in sizeof(void*),not bytes)
   void * task_func_addr;    //-- filled on creation  (ver 2.x)
   void * task_func_param;   //-- filled on creation  (ver 2.x)

   int  base_priority;       //-- Task base priority  (ver 2.x)
   int  priority;            //-- Task current priority
   int  id_task;             //-- ID for verification(is it a task or another object?)
                               // All tasks have the same id_task magic number (ver 2.x)

   int  task_state;          //-- Task state
   int  task_wait_reason;    //-- Reason for waiting
   int  task_wait_rc;        //-- Waiting return code(reason why waiting  finished)
   int  tick_count;          //-- Remaining time until timeout
   int  tslice_count;        //-- Time slice counter

   int  ewait_pattern;       //-- Event wait pattern
   int  ewait_mode;          //-- Event wait mode:  _AND or _OR

   void * data_elem;         //-- Store data queue entry,if data queue is full

   int  activate_count;      //-- Activation request count - for statistic
   int  wakeup_count;        //-- Wakeup request count - for statistic
   int  suspend_count;       //-- Suspension count - for statistic

// Other implementation specific fields may be added below

}TN_TCB;

wink.gif очень впечатляет во FreeRTOS и того меньше, ну да ладно нечего пинять на других коли сам не сделал

Цитата(zltigo @ Jan 28 2009, 21:39) *
Там модифицированный GPL. Почитайте, ну может десять баксов пожертвуйте.... Ну и если действительно заметно доработали, то прежде, чем кто-то это скажет Вы сначала должны зачем-то выложить исходники smile.gif Да и купить на самом деле можно OpenRTOS при малейшей необходимости - время дороже sad.gif .


Мда, а если я хочу выложить исходники (ну типа посмотрите как я крут biggrin.gif ), ну да ладно если бы да кабы.. да росли бы грибы....
Go to the top of the page
 
+Quote Post
VslavX
сообщение Jan 28 2009, 23:29
Сообщение #6


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(ddiimmaa @ Jan 28 2009, 22:47) *
посмотрел
Код
//----- Task Control Block ------------
typedef struct _TN_TCB
{
...
}TN_TCB;

wink.gif очень впечатляет во FreeRTOS и того меньше

Ужимается в полтора раза без потери функционала. У меня сейчас TCB составляет 22 слова. FreeRTOS имеет TCB поменьше (я 16 слов насчитал по-минимуму), конечно, но и функционал победнее. Из синхрообъектов TN очень хороши мутексы (владелец + управление приоритетом) и события (хоть какая-то замена WaitForMultipleObjects). В-общем - размер TCB - это еще не показатель.
Go to the top of the page
 
+Quote Post
ddiimmaa
сообщение Jan 29 2009, 20:40
Сообщение #7


Участник
*

Группа: Validating
Сообщений: 27
Регистрация: 12-12-08
Из: Ижевск
Пользователь №: 42 419



Цитата(VslavX @ Jan 29 2009, 03:29) *
Ужимается в полтора раза без потери функционала.

Странно! А вот интересно? А что же тогда автор не удосужился сам ужимать своё детище? или принимать заплатки от кого либо?


--------------------
Вот пишу ОС, может кому пригодиться ;-)
скачайте http://sourceforge.net/projects/irtos/
и вот сайт ещё http://irtos.sourceforge.net/
Go to the top of the page
 
+Quote Post
VslavX
сообщение Jan 30 2009, 08:16
Сообщение #8


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(ddiimmaa @ Jan 29 2009, 22:40) *
Странно! А вот интересно? А что же тогда автор не удосужился сам ужимать своё детище? или принимать заплатки от кого либо?

Есть такой анекдот:

Жили-были в лесу серые мыши, жизнь у них была трудная и пошли они к мудрому Филину за советом:
- Мы, мыши серые, звери мелкие, все нас обидеть и съесть норовят. Скажи нам, Мудрейший из Мудрейших, как нам быть?
Филин, подумал, подумал, и говорит:
- А вы, мыши, станьте ежиками колючими, и никто вас тогда трогать не будет!
Мыши обрадовались, поблагодарили и собрались уже было уходить:
- Погоди, Мудрейший, а как же нам ежиками стать?
- Млин, ну чего вы ко мне с такой ерундой пристаете - я же только Стратегией занимаюсь! Вот!

Вот и авторы универсальных вещей точно так же - им думать про максимально широкий круг задач нужно, оптмизацией под конкретное применение пусть уже "мыши" занимаются smile.gif.


Цитата(ddiimmaa @ Jan 30 2009, 00:14) *
Так вот он вообще придумал Contikki -- по два байта на поток. Правда у него не поток а протопоток (protothread). И реалтаймом не

Дык, "Контики" - плот он и есть плот. А хочется, если уж не лайнер (Linux/WinCE), то хотя бы океанскую яхту smile.gif. Если ресурсы (финансовые или аппаратные smile.gif) позволяют. А современные недорогие массовые ARM-ы - типа LPC/SAM - "яхту" позволить вполне могут.
Ну океанскую или нет, а "река-море" - запросто.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 30 2009, 09:43
Сообщение #9


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Что то непонятны ваши потуги интуитивно выразить мысль.

Есть скорость работы самой операционки на целевой платформе.
Есть скорость разработки приложения на базе операционки (определяется объемом middleware )
И есть скорость отладки приложения и поддержки либо на целевой платформе либо на host системе. (определяется интегрированными тулсами)
Эти скорости сильно противоречат обычно друг другу.
Поэтому лайнер здесь в проекции на другую плоскость будет трактором.

Малые RTOS нужны для малых процов.
Малых процов на самом деле становиться только больше.
Взять какой-нить netbook:
на HMI один, на управление питанием - другой, на расширяемый ввод-вывод - третий, спец коммуникации - четвертый и т.д.
И на каждый из них имеет смысл ставить RTOS чтобы ускорить разработку. И спрос на малые RTOS соответственно тоже растет.
И универсальность от них требуется достаточно большая и скорость тоже, поскольку от нее зависит энергопотребление.
Выбрав непродумано ось для этих применений можно сильно пролететь.

Заигрываться тоже понятно не стоит. Цена вопроса смены оси где-то месяц.
Но бывает что и это слишком долго поэтому пообсуждать вижу смысл.

А вот рассматривать малую RTOS в плане открытости лицензии или открытости тулсов не вижу смысла. На это есть рефакторинг.
Чем, подозреваю, автор и занимается. biggrin.gif


Цитата(VslavX @ Jan 30 2009, 10:16) *
Дык, "Контики" - плот он и есть плот. А хочется, если уж не лайнер
Go to the top of the page
 
+Quote Post
VslavX
сообщение Jan 30 2009, 13:08
Сообщение #10


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(AlexandrY @ Jan 30 2009, 11:43) *
Что то непонятны ваши потуги интуитивно выразить мысль.

Да я ничего особенного выразить не хотел - топикстартер начал размеры TCB обсуждать, поэтому я привел образное сравнение плавсредств - меньше размер/меньше удобств. Само средство, конечно, желательно выбирать согласно задачи - в луже побарахтаться, Днепр переплыть или Тихий океан пересечь.
Go to the top of the page
 
+Quote Post
ddiimmaa
сообщение Jan 31 2009, 01:20
Сообщение #11


Участник
*

Группа: Validating
Сообщений: 27
Регистрация: 12-12-08
Из: Ижевск
Пользователь №: 42 419



Цитата(VslavX @ Jan 30 2009, 17:08) *
топикстартер начал размеры TCB обсуждать, поэтому я привел образное сравнение плавсредств - меньше размер/меньше удобств.

Ну не хотелось бы уж осень заострять внимание на размере TCB, просто первое на что смотришь, когда изучаешь ОС -- на TCB, (ну есть такое мнение что важнее не функции а структуры данных) вот и поразил меня, нафаршированый TCB у TNKernel. Конечно размер тут тоже имеет значение rolleyes.gif (в виду малого числа RAM), но больше удивило то, что на каждый объект (семафор мютекс и т. д.) у разработчика свой элемент в TCB.
Go to the top of the page
 
+Quote Post
VslavX
сообщение Jan 31 2009, 07:55
Сообщение #12


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(ddiimmaa @ Jan 31 2009, 03:20) *
но больше удивило то, что на каждый объект (семафор мютекс и т. д.) у разработчика свой элемент в TCB.

Это где там на каждый объект свое поле в TCB? Есть свои списки для мьютексов - но это для реализации протоколов наследования приоритета. BTW, я через авторский вариант мьютексов "не продрался", сделал упрощенный вариант PIP/PCP (приоритет снижаем при освобождении мьютекса - сканируем захваченные мьютексы и выбирает макс уровень) - тогда один список не нужен. А так -
все списки в TCB очень даже на месте и лишних нет:

CDLL_QUEUE task_queue; - включен или в список диспетчера (и такой список свой для каждого уровня приоритета - планировщик работает очень быстро) или в список объекта который ждет -mutex/sem/event/queue

CDLL_QUEUE timer_queue; - включен в список проверки на тайм-аут ожидания. Теоретически можно и выкинуть - тогда в процедуре системного таймера бежать не по этому списку, а по списку всех задач и смотреть "кто ждет" и проверять тайм-аут. Но это - неоптимально, поэтому список таймера стоит этих 2-х слов в TCB, имхо.

CDLL_QUEUE block_queue; - этого у меня нет, используется для протоколов управления приоритетами, я схему немного упростил, но все "в рамках приличий", которые допускает uTRON 4.x. Насколько я смог разобраться, авторский вариант реализует полные версии PIP/PCP, что, имхо, несколько избыточно, хотя и приятно.

CDLL_QUEUE create_queue; - просто список всех задач в системе. Не особо нужен (кажется, даже реально в оригинале не используется), но полезен при отладке (выводим список всех задач в системе) и при контроле повторного использования TCB.

CDLL_QUEUE mutex_queue; - просто необходимый список для реализации протоколов PIP/PCP, чтобы по этим протоколам вычислить приоритет задачи надо иметь список залоченных задачей мьютексов. Ну, альтернатива - можно иметь один глобальный список мьютексов в системе, сканировать его - проверять наш/не наш. Но мьютексов в системе может быть очень много, а вот реально залочено задачей - один/два/три. Поэтому выигрыш в скорости - существенный. Также используется для автоматического освобождения мьютексов при завершении задачи (типа автоочистки) - бесплатный бонус smile.gif

Да, списки можно сделать и односвязными. Ессно, потеряв в скорости и в предсказуемости времени операций добавления/удаления элемента - имхо, в данном случае - моветон.

Итак, ужать еще кое-что можно. Но - упадет скорость и потеряем кое-что полезное.
Еще момент - при написании/рефакторинге ОС неплохо бы определится с целевой платформой, тогда не будет таких вопросов - "а почему такой относительно сложный TCB". Например, когда я "осваивал" TN - сразу задал для себя некоторую минимальную планку ресурсов - минимум 32-битник и 8К оперативки и 32К флеша - на сегодня это младшие представители семейств LPC/SAM - так что такая планка вполне оправдана. Под 32-битностью я также понимаю атомарность операций извлечения/записи в память 32-битного слова/указателя -это позволило значительно пооптимизировать кое-какие места.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 31 2009, 11:18
Сообщение #13


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Да, тема портирования высокомерно замалчивается, хотя она наверно тут самая важная.
Имеет ли смысл делать непривязанную к платформе операционку?
Тут как раз время начать кому-то кажущуюся религиозной войну на тему популярности и юзабельности uC.

На мой взгляд универсальность в этом плане делать не стоит.
Я тоже за ARM-ы, но только за Cortex-ы

И че сразу надо учесть - это соглашения из Application Binary Interface.
Неучет ABI - бесконечный источник траблов даже в солидных осях.
Даже в uCOS не знаю как сейчас, но раньше не брали в расчет нюансы ABI
И получали сюрпризы типа: а у меня из задачи стандартные либы так-то и так-то сбоят.


Цитата(VslavX @ Jan 31 2009, 09:55) *
Под 32-битностью я также понимаю атомарность операций извлечения/записи в память 32-битного слова/указателя -это позволило значительно пооптимизировать кое-какие места.
Go to the top of the page
 
+Quote Post
ddiimmaa
сообщение Feb 3 2009, 08:51
Сообщение #14


Участник
*

Группа: Validating
Сообщений: 27
Регистрация: 12-12-08
Из: Ижевск
Пользователь №: 42 419



Цитата(AlexandrY @ Jan 31 2009, 15:18) *
На мой взгляд универсальность в этом плане делать не стоит.
Я тоже за ARM-ы, но только за Cortex-ы

И че сразу надо учесть - это соглашения из Application Binary Interface.
Неучет ABI - бесконечный источник траблов даже в солидных осях.


Хм, если ОСь -- оpen source, тогда какие могут быть траблы, главно API не часто менять, а на ABI наплевать.

Цитата(AlexandrY @ Feb 1 2009, 23:44) *
Кстати копнув глубже в архитектуру ARMv7-M (ядро Cortex-а) обнаружил там команды чем-то напоминающие вход и выход из критических секций в мультипроцессорной системе.
Неплохой задел для операционок будущего!


Ну дак поделитесь хоть мнемоникой.


--------------------
Вот пишу ОС, может кому пригодиться ;-)
скачайте http://sourceforge.net/projects/irtos/
и вот сайт ещё http://irtos.sourceforge.net/
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 3 2009, 09:12
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(ddiimmaa @ Feb 3 2009, 11:51) *
а на ABI наплевать.

Сильное заявление smile.gif Плевать на стандарты, мягко говоря, не рекомендуется. Особенно осестроителям.
Go to the top of the page
 
+Quote Post
ddiimmaa
сообщение Feb 4 2009, 20:37
Сообщение #16


Участник
*

Группа: Validating
Сообщений: 27
Регистрация: 12-12-08
Из: Ижевск
Пользователь №: 42 419



Цитата(aaarrr @ Feb 3 2009, 13:12) *
Сильное заявление smile.gif Плевать на стандарты, мягко говоря, не рекомендуется. Особенно осестроителям.

Когда будут хотя бы 10 приложений для ОСи тогда будет не наплевать на АПИ
А когда будет загрузчик и две три либы тогда будет не наплевать на АБИ

А сейчас... кхм кхм.... начхать на них мона. biggrin.gif


--------------------
Вот пишу ОС, может кому пригодиться ;-)
скачайте http://sourceforge.net/projects/irtos/
и вот сайт ещё http://irtos.sourceforge.net/
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 4 2009, 20:48
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(ddiimmaa @ Feb 4 2009, 23:37) *
А сейчас... кхм кхм.... начхать на них мона. biggrin.gif

Это заблуждение. Лучше соблюдать стандарты с самого начала, чем потом исправлять уже растиражированные ошибки.
Go to the top of the page
 
+Quote Post
ddiimmaa
сообщение Feb 6 2009, 17:38
Сообщение #18


Участник
*

Группа: Validating
Сообщений: 27
Регистрация: 12-12-08
Из: Ижевск
Пользователь №: 42 419



Цитата(aaarrr @ Feb 5 2009, 00:48) *
Это заблуждение. Лучше соблюдать стандарты с самого начала, чем потом исправлять уже растиражированные ошибки.


Даааа? Я буду рад если вы мне покажите нормальный стандарт под такую ОСь. POSIX не предлагать слишком монструозно для таких осей. miTRON -- хороший стандар однако уж больно там имена функций корявые мне своим русским умом японские сокращения не понять


--------------------
Вот пишу ОС, может кому пригодиться ;-)
скачайте http://sourceforge.net/projects/irtos/
и вот сайт ещё http://irtos.sourceforge.net/
Go to the top of the page
 
+Quote Post
VslavX
сообщение Feb 7 2009, 07:56
Сообщение #19


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(ddiimmaa @ Feb 6 2009, 19:38) *
miTRON -- хороший стандар однако уж больно там имена функций корявые мне своим русским умом японские сокращения не понять

Хм, а какое отношение имена функций имеют к идеологии?


Цитата(sergeeff @ Feb 6 2009, 19:52) *
останавливает, что она написана на C++

Имхо, в "плюсах" очень много возможностей для генерации неявного кода, чтобы грамотно пользовать C++ в embedded надо знать язык _очень_ хорошо. Вот здравое сомнение в своем уровне владения языком и останавливает.
Go to the top of the page
 
+Quote Post
dxp
сообщение Feb 7 2009, 14:32
Сообщение #20


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(VslavX @ Feb 7 2009, 13:56) *
Имхо, в "плюсах" очень много возможностей для генерации неявного кода, чтобы грамотно пользовать C++ в embedded надо знать язык _очень_ хорошо. Вот здравое сомнение в своем уровне владения языком и останавливает.

Насчет много, это вы погорячились. Основной генератор неявного кода - шаблоны, исключения и RTTI. В embedded реально используются только шаблоны, вот с ними надо быть внимательным, но сюрпризов там нет - все достаточно легко прогнозируется. Остальное: неявная передача this в функции-члены при вызове, все эти vtpr/vtbl и прочее - это, во-первых, мелочи, во-вторых, это не оверхед, а реализация необходимой функциональности, которую в противном случае (например, на С) пришлось бы писать руками.

Не пренебрегайте плюсами, применяйте - очень скоро почувствуете уверенность и обратно уже не захочется. smile.gif


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Feb 7 2009, 14:57
Сообщение #21


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Обратно никогда не хочется!
Став все время работать на C++ вы забываете постепенно паттерны программирования на C и вам затруднительно использовать фреймворк который нынче весь исключительно на C написан. Или сидите на двух стульях и пишите медленнее обычного и делаете больше багов.
Либо вы вообще узкий специалист и это не ваша игра.

Освоение С++ меньше всего сводится к синтаксису и объектной модели, надо иметь экосистему, как модно нынче говорить, для использования этого языка.
C++ в embedded просто неконкурентоспособен.
Т.е. написав ось на C++ вам придется писать и фреймворк и прикладные стеки на C++
А это абсолютная утопия еще в ближайшие десятилетия.
Сделать заново целиком весь embedded фреймворк способны только гиганты типа Microsoft.
Но они уже сделали ставку на C# и .NET.
А нишу малых RTOS они занимают micro framework у которого HAL уровень на том же C написан.



Цитата(dxp @ Feb 7 2009, 16:32) *
Насчет много, это вы погорячились. Основной генератор неявного кода - шаблоны, исключения и RTTI. В embedded реально используются только шаблоны, вот с ними надо быть внимательным, но сюрпризов там нет - все достаточно легко прогнозируется. Остальное: неявная передача this в функции-члены при вызове, все эти vtpr/vtbl и прочее - это, во-первых, мелочи, во-вторых, это не оверхед, а реализация необходимой функциональности, которую в противном случае (например, на С) пришлось бы писать руками.

Не пренебрегайте плюсами, применяйте - очень скоро почувствуете уверенность и обратно уже не захочется. smile.gif
Go to the top of the page
 
+Quote Post
VslavX
сообщение Feb 7 2009, 23:09
Сообщение #22


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(AlexandrY @ Feb 7 2009, 16:57) *
Обратно никогда не хочется!
Став все время работать на C++ вы забываете постепенно паттерны программирования на C и вам затруднительно использовать фреймворк который нынче весь исключительно на C написан. Или сидите на двух стульях и пишите

Ну, это смотря насколько в C++ углубиться. Идеи в ++ есть, немало, и среди них есть даже полезные. Я, например, довольно часто использую сам объектный подход - неважно, что функции обычные С-шные и изолирование методов и данных производится примитивно вручную на уровне файлов и операторов static. Да, нет перегрузки, наследования и прочего, но проект в целом видится яснее.
Цитата(AlexandrY @ Feb 7 2009, 16:57) *
Т.е. написав ось на C++ вам придется писать и фреймворк и прикладные стеки на C++

Имхо, при желании вполне можно подружить C++ приложение и C-framework. Придется поработать, не без этого, но - возможно. Меня скорее напрягает вероятная проблема с компиляторами - спектр применяемых архитектур широкий - ARM/XScale, PowerPC, X86, возможно скоро будет MIPS, маячит Nios/CortexM1. На "чистом C" как-то все пока получалось переносить без особых проблем. Но - все равно тема интересная, думаю надо таки ++ попробовать - на каком-то ограниченном проекте (и, кстати, на сишном фреймворке), только бы вот время на это все найти sad.gif. Паттерны вряд ли забудутся - я любитель частенько смотреть в ассемблерный листинг. smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ddiimmaa   Пишу ОС РВ   Jan 27 2009, 22:58
|- - zltigo   Цитата(ddiimmaa @ Jan 28 2009, 20:15) Мож...   Jan 28 2009, 17:39
|- - AlexandrY   В RL ARM у TCB размер 12 слов, а по функционалу о...   Jan 29 2009, 11:44
||- - VslavX   Цитата(AlexandrY @ Jan 29 2009, 13:44) В ...   Jan 29 2009, 16:02
|- - zltigo   Цитата(ddiimmaa @ Jan 29 2009, 23:40) Стр...   Jan 29 2009, 20:56
||- - ddiimmaa   Цитата(zltigo @ Jan 30 2009, 00:56) Потом...   Jan 29 2009, 22:14
||- - zltigo   Цитата(ddiimmaa @ Jan 30 2009, 01:14) И р...   Jan 29 2009, 23:29
|- - AlexandrY   Кстати копнув глубже в архитектуру ARMv7-M (ядро C...   Feb 1 2009, 19:44
|- - aaarrr   Цитата(ddiimmaa @ Feb 6 2009, 20:38) Дааа...   Feb 6 2009, 17:51
||- - ddiimmaa   Цитата(aaarrr @ Feb 6 2009, 21:51) Сначал...   Feb 14 2009, 14:17
||- - aaarrr   Цитата(ddiimmaa @ Feb 14 2009, 17:17) В т...   Feb 14 2009, 14:57
||- - ddiimmaa   Цитата(aaarrr @ Feb 14 2009, 18:57) Компи...   Feb 14 2009, 20:47
||- - aaarrr   Цитата(ddiimmaa @ Feb 14 2009, 23:47) Или...   Feb 14 2009, 21:54
||- - ddiimmaa   Вчера я выложил в Интернет более менее работаюшую ...   Feb 15 2009, 14:39
|- - yuri_t   IMXO, у С++ наиболее полезные вещи -это наследован...   Feb 8 2009, 08:00
- - MrYuran   А scmRTOS? Вроде бы как раз, для дохленьких контро...   Jan 28 2009, 05:40
- - AlexandrY   Ну покажите класс. Кто вас знает, мож вы гений. ...   Jan 28 2009, 07:40
|- - zltigo   Цитата(AlexandrY @ Jan 28 2009, 10:40) Вт...   Jan 28 2009, 09:09
- - Rst7   Цитатавсего-то в Memory Control Block менежера пам...   Jan 28 2009, 09:14
|- - VslavX   Цитата(Rst7 @ Jan 28 2009, 11:14) LR еще ...   Jan 28 2009, 11:26
- - Rst7   ЦитатаLR? А если это не ARM? Ну адрес вызывающей ...   Jan 28 2009, 11:35
|- - VslavX   Цитата(Rst7 @ Jan 28 2009, 13:35) А ассер...   Jan 28 2009, 11:58
||- - _Pasha   Цитата(VslavX @ Jan 28 2009, 15:58) Подхо...   Jan 28 2009, 12:31
|- - zltigo   Цитата(Rst7 @ Jan 28 2009, 14:35) Ну адре...   Jan 28 2009, 13:38
|- - VslavX   Цитата(zltigo @ Jan 28 2009, 15:38) Так я...   Jan 28 2009, 13:55
|- - zltigo   Цитата(VslavX @ Jan 28 2009, 16:55) Напри...   Jan 28 2009, 14:04
|- - VslavX   Цитата(zltigo @ Jan 28 2009, 16:04) Значи...   Jan 28 2009, 14:38
- - Rst7   ЦитатаПодход очень неплох - когда завершаемся - мо...   Jan 28 2009, 12:04
|- - VslavX   Цитата(Rst7 @ Jan 28 2009, 14:04) минимал...   Jan 28 2009, 12:17
- - Rst7   ЦитатаА как Вы ищете потом процедуру по этому адре...   Jan 28 2009, 12:28
|- - VslavX   Цитата(Rst7 @ Jan 28 2009, 14:28) В IDA п...   Jan 28 2009, 12:42
- - Rst7   ЦитатаА для IAR-а тоже сработает? Ага. 4.42 точно...   Jan 28 2009, 12:43
- - Rst7   Цитатадля текущей задачи задачи известен указатель...   Jan 28 2009, 13:41
|- - zltigo   Цитата(Rst7 @ Jan 28 2009, 16:41) Я не оч...   Jan 28 2009, 13:46
- - Rst7   ЦитатаТогда при вызове malloc у меня можно явно ук...   Jan 28 2009, 13:53
- - Rst7   Плохо только то, что армовский IAR почему-то не ск...   Jan 28 2009, 13:57
|- - VslavX   Цитата(Rst7 @ Jan 28 2009, 15:57) Плохо т...   Jan 28 2009, 14:24
- - Rst7   ЦитатаПопробуйте применить к функции модификатор s...   Jan 28 2009, 14:27
- - Rst7   ЦитатаА функции, да, не конкатенирует Дык я об эт...   Jan 28 2009, 14:43
- - sergeeff   Многие признают, что scmRTOS для микропроцессоров ...   Feb 6 2009, 17:52


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th July 2025 - 00:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01628 секунд с 7
ELECTRONIX ©2004-2016