|
|
  |
TNKernel, пара вопросов автору |
|
|
|
Mar 25 2007, 03:49
|
Гуру
     
Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493

|
Неудобно писать в личку, надеюсь коллеги меня простят. Юрий, хочу выразить благодарность за TNKernel, недавно начал пользовать, очень удобно, все нравится. Но возникли пара вопросов.. Первый такой - в tn_event_clear маской задается именно флаги которые НЕ надо очищать. Это вызвано какими-то особыми соображениями или это кажется нелогичным только мне ? А второй такой. Очень удобно для синхронизации двух потоков использовать tn_queue_send/receive. Часто параметр data_ptr просто не нужен. Однако если send позволяет использовать NULL, то receive - нет. По-моему тоже нелогично. Или я не прав ? Конечно, все это можно поправить "для себя"... но я пока особого опыта работы со встроенными операционками не имею, только с виндой немного, поэтому и спрашиваю. Заранее спасибо !
|
|
|
|
|
Mar 25 2007, 10:29
|

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

|
хоть и не автор, но отвечу >> Первый такой - в tn_event_clear маской задается именно флаги >> которые НЕ надо очищать. Это вызвано какими-то особыми >> соображениями или это кажется нелогичным только мне ? я думаю особых соображений там нет: Код TN_RETVAL tnec_event_clear (TN_EVENT_S *evf, TN_UWORD pattern) { /* ...код... */
tn_disable_interrupt();
evf->pattern &= pattern; /* Clear event pattern */
tn_enable_interrupt(); return TERR_NO_ERR; } мне это вобщем тоже показалось нелогичным, но когда портировал на PIC24, просто решил не менять API По поводу очередей - в принципе тоже реализуемо - закомментировть проверку указателя на NULL в tn_queue_receive() и dque_fifo_read() и соответственно не сохранять указатель из FIFO по указателю в NULL. Дмитрий сам же наверное уже все посмотрел =) Вот честно, по времени больше думал, стоит ли так сильно коцать исходники, чем собственно портировал. Решил что стоит =) http://www.pic24.ru/tnkernel.htm
|
|
|
|
|
Mar 25 2007, 11:25
|

Странник
   
Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051

|
Цитата(Alex B._ @ Mar 25 2007, 13:29)  Вот честно, по времени больше думал, стоит ли так сильно коцать исходники, чем собственно портировал. Решил что стоит =) ИМХО: Это не порт, а отдельная ветка, причем не совместимая по структуре и API -- эксклюзив, можно и имя поменять -- TNKernel-PIC24 - если что-то будет изменено в настоящем ядре TNKernel -- придется ветку снова перепахивать руками - если в системе есть что-то не на PIC24(а на ARM), то придется сопровождать ДВЕ операционки... да и не будет никто такого делать, зачем такая операционка, которая на каждое семейство имеет самостоятельную реализацию... Делать операционку "под себя" -- можно, но тогда нельзя будет легко воспользоваться опытом и наработками, которые могут появится по основному релизу, постоянно придется "проецировать" на свою реализацию. Лучше "договориться с автором", если это возможно, и по результатам или доработать публичную версию или постараться понять и принять позицию создателя.
--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
|
|
|
|
|
Mar 25 2007, 11:51
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(spf @ Mar 25 2007, 10:25)  Делать операционку "под себя" -- можно, но тогда нельзя будет легко воспользоваться опытом и наработками... Для 'маленьких' операционок приходится, поскольку практически неизбежно просматриваются определенные варианты использования и вкусовые предпочтения Автора (причем приставать к Автору со "со своим уставом", как минимум не корректно, а как максимум бесполезно). Да и качественные порты обычно ограничиваются несколькими контроллерами - остальные или "для галочки" или сделаны пользователями с очень разной степенью квалификации  . Ну а для"воспользоваться наработками" из основной ветки - надо использовать контроль версий, это без вариантов.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Mar 25 2007, 12:21
|

Странник
   
Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051

|
Цитата(zltigo @ Mar 25 2007, 14:51)  Ну а для"воспользоваться наработками" из основной ветки - надо использовать контроль версий, это без вариантов. Если различны структуры проектов, имена функций и т.п., то никакой контроль версий не поможет, все придется делать ручками или городить огород из специальных инструментов. Цитата(zltigo @ Mar 25 2007, 14:51)  причем приставать к Автору со "со своим уставом", как минимум не корректно, а как максимум бесполезно Это почему же? Какая религия этого не приветствует? У меня есть практика подобных "приставаний". Да, может быть, свои замечания высказывал не в форме "устава", а в виде пожеланий и предложений, кое-что было принято по результатам коллективного обсуждения. Теперь этим будут пользоваться многие - все, поддерживающие "основную ветку". Коллективная работа - великая вещь  .
--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
|
|
|
|
|
Mar 25 2007, 12:52
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(spf @ Mar 25 2007, 11:21)  Если различны структуры проектов, имена функций и т.п., А зачем, простите, ВСЕ ломать? У меня, например, во FreeRTOS (сейчас глянул) 72 места правок полностью другой менеджер памяти и еще своих три файла. Кое-что для совместимости с первоисточником макросами прикрыто. Комментарии присутствуют. Синхронизация c основной веткой занимает обычно считанные минуты. Цитата кое-что было принято А остальное  . Кроме того, поминалось коллективное обсуждение - для многих проектов колектива нет - есть Автор и все. Автор волен поступать, так, как ему видится правильным. Реакция на замечания из вне обычно очень благожелательная при указании на найденные ошибки и очень сдержанная на предлагаемые изменения в поведении системы. Реакция на изменения в, например, API скорее всего категорически отрицательная.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Mar 25 2007, 20:32
|
Частый гость
 
Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937

|
Прежде всего - спасибо всем вам за интерес к TNKernel. Всегда приятно, когда работа находит отклик у других людей...
По поводу Event mask - такой подход только потому, что я следовал спецификации uITRON 4.0 буквально, а в uITRON сделанно именно так. По поводу tn_queue_send/receive - если через очередь не надо передавать данные(data_ptr не используется), то, IMHO, для синхронизации лучше использовать семафор - меньше ресурсов занимает, быстрее работает.
Что же касается создания субверсий и изменений/добавлений - то лично я это только приветствую. Единственно, что следует помнить - нужны многочисленные и разнообразные тесты (без надлежащего тестирования то, что работает в одном проекте, в другом может не работать).
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|