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

 
 
 
Reply to this topicStart new topic
> TNKernel, пара вопросов автору
DASM
сообщение Mar 25 2007, 03:49
Сообщение #1


Гуру
******

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



Неудобно писать в личку, надеюсь коллеги меня простят. Юрий, хочу выразить благодарность за TNKernel, недавно начал пользовать, очень удобно, все нравится. Но возникли пара вопросов.. Первый такой - в tn_event_clear маской задается именно флаги которые НЕ надо очищать. Это вызвано какими-то особыми соображениями или это кажется нелогичным только мне ?
А второй такой. Очень удобно для синхронизации двух потоков использовать tn_queue_send/receive. Часто параметр data_ptr просто не нужен. Однако если send позволяет использовать NULL, то receive - нет. По-моему тоже нелогично. Или я не прав ? Конечно, все это можно поправить "для себя"... но я пока особого опыта работы со встроенными операционками не имею, только с виндой немного, поэтому и спрашиваю. Заранее спасибо !
Go to the top of the page
 
+Quote Post
Alex B._
сообщение Mar 25 2007, 10:29
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
spf
сообщение Mar 25 2007, 11:25
Сообщение #3


Странник
****

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



Цитата(Alex B._ @ Mar 25 2007, 13:29) *
Вот честно, по времени больше думал, стоит ли так сильно коцать исходники, чем собственно портировал. Решил что стоит =)

ИМХО:
Это не порт, а отдельная ветка, причем не совместимая по структуре и API -- эксклюзив, можно и имя поменять --TNKernel-PIC24 wink.gif
- если что-то будет изменено в настоящем ядре TNKernel -- придется ветку снова перепахивать руками
- если в системе есть что-то не на PIC24(а на ARM), то придется сопровождать ДВЕ операционки... да и не будет никто такого делать, зачем такая операционка, которая на каждое семейство имеет самостоятельную реализацию...

Делать операционку "под себя" -- можно, но тогда нельзя будет легко воспользоваться опытом и наработками, которые могут появится по основному релизу, постоянно придется "проецировать" на свою реализацию. Лучше "договориться с автором", если это возможно, и по результатам или доработать публичную версию или постараться понять и принять позицию создателя.


--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 25 2007, 11:51
Сообщение #4


Гуру
******

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



Цитата(spf @ Mar 25 2007, 10:25) *
Делать операционку "под себя" -- можно, но тогда нельзя будет легко воспользоваться опытом и наработками...

Для 'маленьких' операционок приходится, поскольку практически неизбежно просматриваются определенные варианты использования и вкусовые предпочтения Автора (причем приставать к Автору со "со своим уставом", как минимум не корректно, а как максимум бесполезно). Да и качественные порты обычно ограничиваются несколькими контроллерами - остальные или "для галочки" или сделаны пользователями с очень разной степенью квалификации sad.gif. Ну а для"воспользоваться наработками" из основной ветки - надо использовать контроль версий, это без вариантов.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
spf
сообщение Mar 25 2007, 12:21
Сообщение #5


Странник
****

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



Цитата(zltigo @ Mar 25 2007, 14:51) *
Ну а для"воспользоваться наработками" из основной ветки - надо использовать контроль версий, это без вариантов.

Если различны структуры проектов, имена функций и т.п., то никакой контроль версий не поможет, все придется делать ручками или городить огород из специальных инструментов.



Цитата(zltigo @ Mar 25 2007, 14:51) *
причем приставать к Автору со "со своим уставом", как минимум не корректно, а как максимум бесполезно

Это почему же? Какая религия этого не приветствует?

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

Коллективная работа - великая вещь wink.gif.


--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 25 2007, 12:48
Сообщение #6


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(spf @ Mar 25 2007, 12:21) *
Коллективная работа - великая вещь wink.gif.

За исключением тех случаев, когда исходники бесплатны, а поддержка - за денюшки.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 25 2007, 12:52
Сообщение #7


Гуру
******

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



Цитата(spf @ Mar 25 2007, 11:21) *
Если различны структуры проектов, имена функций и т.п.,

А зачем, простите, ВСЕ ломать? У меня, например, во FreeRTOS (сейчас глянул) 72 места правок полностью другой менеджер памяти и еще своих три файла. Кое-что для совместимости с первоисточником макросами прикрыто. Комментарии присутствуют. Синхронизация c основной веткой занимает обычно считанные минуты.
Цитата
кое-что было принято

А остальное sad.gif. Кроме того, поминалось коллективное обсуждение - для многих проектов колектива нет - есть Автор и все. Автор волен поступать, так, как ему видится правильным. Реакция на замечания из вне обычно очень благожелательная при указании на найденные ошибки и очень сдержанная на предлагаемые изменения в поведении системы. Реакция на изменения в, например, API скорее всего категорически отрицательная.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Alex B._
сообщение Mar 25 2007, 15:02
Сообщение #8


Знающий
****

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



>> Это не порт, а отдельная ветка, причем не совместимая
>> по структуре и API

изменения в API там совсем незначительные. Сервисов вообще не касаются. Все изменения были сделаны из личных соображений - ну не хочу я использовать зарезервированные имена функций для инициализации системы. Не хочу чтобы память под стеки служебных задач выделялась при компиляции ядра или использовать в ядре динамическое выделение памяти.
Вообще API изменен только для двух функций (и то - передаваемые параметры).

Структура, ну что структура... я прекрасно понимаю, что придется делать при выпуске Юрием нового релиза. Я ж говорю - долго думал и в итоге решил делать по своему. Навязывать что-то свое автору совсем не хочется. zltigo очень правильно обозначил как авторы реагируют на замечания и просьбы.

Ну а для пример - есть проект на LPC2148 - свой код под RealView я портировал за полчаса, потому что все компиляторо/железо зависимые вещи четко обозначены. С родным кодом пришлось повозиться.
Go to the top of the page
 
+Quote Post
DASM
сообщение Mar 25 2007, 16:26
Сообщение #9


Гуру
******

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



Так нет.. что именно править у меня вопросов не возникло. Я хотел спросить "почему сейчас так". Просто по сути ответов станет ясно, правильно ли вообще мыслю (повторюсь, начинающий). Пока что по ответам (спасибо) - вроде да. Интересно, что скажет автор. Править ничего не буду, ибо ось уже есть, и народом используется, зачем мне свое эксклюзивное API
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 25 2007, 16:51
Сообщение #10


Гуру
******

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



Цитата(Alex B._ @ Mar 25 2007, 14:02) *
zltigo очень правильно обозначил как авторы реагируют на замечания и просьбы.

Следует отметить, что все мной сказанное не имеет никакого конкретного отношения к Юрию.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
spf
сообщение Mar 25 2007, 17:32
Сообщение #11


Странник
****

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



Цитата(Alex B._ @ Mar 25 2007, 18:02) *
zltigo очень правильно обозначил как авторы реагируют на замечания и просьбы.

Это его личное мнение, как я себе понимаю, и не известно имеется ли практическое подтеждение. Принимать его на веру не следует. Моя практика другая - авторы открытых проектов идут на контакт с пользователями.


--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
Go to the top of the page
 
+Quote Post
yuri_t
сообщение Mar 25 2007, 20:32
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937



Прежде всего - спасибо всем вам за интерес к TNKernel. Всегда приятно,
когда работа находит отклик у других людей...

По поводу Event mask - такой подход только потому, что я следовал
спецификации uITRON 4.0 буквально, а в uITRON сделанно именно
так.
По поводу tn_queue_send/receive - если через очередь не надо передавать
данные(data_ptr не используется), то, IMHO, для синхронизации лучше
использовать семафор - меньше ресурсов занимает, быстрее работает.

Что же касается создания субверсий и изменений/добавлений - то лично
я это только приветствую. Единственно, что следует помнить - нужны
многочисленные и разнообразные тесты (без надлежащего тестирования то,
что работает в одном проекте, в другом может не работать).
Go to the top of the page
 
+Quote Post
DASM
сообщение Mar 25 2007, 20:42
Сообщение #13


Гуру
******

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



О, понял. Спасибо. По первому так и думал честно говоря. А по второму.. Мне надо было так. Один поток ждет события. Другой его ставит. Но были опасения, что между временем пробуждения первого потока и очисткой event им же через tn_event_clear второй поток может опять выставить этот же event повторно - и тогда этот второй "запрос" будет очищен без обработки. Попробовал очередь - тогда второй поток не сможет выставить флаг для первого, пока первый не обработает запрос, т.е. то, что и нужно. Но потом вспомнил, что event можно использовать с автосбросом - думаю это оптимальный выход..
Go to the top of the page
 
+Quote Post

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

 


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


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