Отговори на тема  [ 76 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5, 6  Следваща
Zero copy TCP/IP стек 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
emilvtc написа:
...
tgi, явно вече говорим за едни и същи неща. Само искам да отбележа, че при изпълнението на системни (за ртос-а) функции за кратко време (в критичната си секция) прекъсванията се забраняват (с изклщчение на ФАСТ прекъсванията за които говоря). (Сист. функция за сетване на евент флаг не прави изключение)


А, сега нещата стават още по-едни и същи. Едно е да забраниш прекъсванията в "критичната секция",
примерно в power докато прекопираш три регистъра и save-неш други 4-5, съвсем друго би било
да ги маскира човек докато трае цяла функция. Е, непрекъсваема модификация на флагове да се
прави с маскирани прекъсвания е класически пример, разбира се, ама то там и друго освен критична
част няма :-) .

Цитат:
Не ми е известна РТОС, която никога да не забранява прекъсванията при обработката на системни заявки ...
Не всички РТОС-и и процесори поддържат тези ФАСТ прекъсвания. Изискванията към процесора е да поддържа приоритети на прекъсванията, както и вложени прекъсвания ... Ако това е на лице - останалото зависи от имплементацията на РТОС-а...


На операционната система обикновено и стига най-ниското ниво на прекъсване, оттам нататък
другите дали се маскират или не зависи от архитектурата (хардуерна).
В 68k например прекъсванията не се маскират от trap инструкцията; в power пък - бидейки RISC - се маскират
за всеки "exception", и работа на кода, обработващ тоя exception е да докара в няколко цикъла
процесора до възстановимо състояние и да разреши прекъсванията. Като ефикасност последното
е малко по-удачно, скоростта е същата, а гъвкавостта малко по-голяма, но това са подробности.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Вто Юни 23, 2009 6:53 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
miro_atc написа:
...
Да ама едни клиенти казаха искаме да ползваме евтини мемори карти, а те с един шибан I2C-подобен интерфейс, който трябваше да емулирам софтуерно.... На всичкото отгоре сложили едно изискване клокът да е между 7 и 50kHz, което е между рак и щука. Твърде бързo за таск, щото мимималния ми sleep е 1ms (падам под 1kHz) и твърде бавно за циклене щото вдигам CPU usage за твърде дълго....


Е това е любим вариант, няма що. И аз много се дразня, като изпадна в такава ситуация.
Решението е очевидно - явно няма как да стане без обсебване на процесора в цикъл, и то
дълъг; ама нали е против всичко разумно и свястно, което човек е правил през годините,
и ми се обръщат червата. Не помня къде и кога беше през годините, но май имах подобен
проблем... помня само какво е усещането обаче, другото се е изтрило :-) .

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Вто Юни 23, 2009 7:34 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 06, 2007 8:44 pm
Мнения: 3175
Местоположение: Пловдив
Мнение 
От всичко казано до тук - общо взето успяхме да се разбереме за какво говориме.

Та в крайна сметка има ли желаещи, които биха се включили по някакъв начин в подкарването на РТОС, TCP/IP стек и компилатор?

Аз в случая имам интерес всичко това да е за кортекс, с уговорката че трябва да се предвидят вариянти и за портването му (реюзване) и за бъдещи нови процесори които ще се появат.
Лично аз се интересувам от РТОС, който да може да работи изцяло в едночипова конфигурация на системата (да ползва само вътрешна РАМ и РОМ на процесора). Същото се отнася и за стека, като вече за броя на конекциите поддържани едновременно от него си струва да поговориме допълнително. (лично аз едва ли ще използвам повече от една такава конекция).
Относно драйверите поддържани от РТОС-а - ако с тях може да се изпълнят гореописаните условия - от това по-добро няма :-)

За компилатора - имам всичко необходимо за работа с Кеил (включително и ULINK), но с голямо удоволствие бих инвестирал "време и енергия" в разучаването и подкарването на GCC... В крайна сметка останах с впечатлението, че почти всички участници във форума мислят по подобен начин ...

Можеме ли да направиме подобно "коопериране" помежду ни и как да го направиме ?
Идеи ?


Сря Юни 24, 2009 1:50 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
Някой да вземе да премести темата в раздел безумни идеи :D

Пич, разбирам ентусиазма ти, обаче това за което говориш е един айсберг от проблеми. Минах по тоя път и не горя от желания да минавам пак...
Работата е страшно много... Айде за Кортекс може и да е по-малко и да има примерни читави библиотеки, щото самият ОС е една малка прашинка. Поне за АРМ7 беше така. Един кърнел се прави бързо, обаче като почнеш динамични памети, драйвери за периферии, стек за това, стек за онова и накрая стигнеш до някаква проста обектна среда - всичко това отнема години.
В началото и аз търсех мераклии, та ужким ако се върже някой да помага с код или поне идеи... Да кажем, че не съм търсил достатъчно или че просто не попаднах на хора със сходни нужди - и в двата варианта има логично обяснение. По-интересното е, че след като направих и го предложих на познати - при това не просто безплатно, ами и с фрее съпорт. И пак интерес близък до нулев... Това наистина ме учуди, щото не го предлагах на непознати, а на хора с които си имаме взаимно доверие и съм им продавал не едно или две неща моя разработка. В един момент им предлагам нещо безплатно и те се дърпат... Даже и тук във форума съм споменавал много пъти, но не е имало особен интерес. Не съм публикувал сорсове поради простата причина, че дълго време ги променях, а освен това и да искам не мога да публикувам всичко, защото има замесени и други хора освен мен...

Та както ида е, моят съвет е да заебеш орташката работа. Ако ти трябва помощ за нещо конкретно тук му е мястото - кой колкото може ще помога надявам се...


Сря Юни 24, 2009 3:45 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Юли 31, 2007 2:55 pm
Мнения: 1792
Местоположение: София
Мнение 
emilvtc написа:
... но с голямо удоволствие бих инвестирал "време и енергия" в разучаването и подкарването на GCC...


RTFM + експерименти и с времето си там, като всичко друго.


Сря Юни 24, 2009 4:16 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 06, 2007 8:44 pm
Мнения: 3175
Местоположение: Пловдив
Мнение 
Miro,
вероятно ще се окажеш прав за "безумните идеи"... (дано обаче да не)

Относно шерването на сорсове - това може да се организира само помежду хората участващи в начинанието.

Не си представях да започнем и здраво да пишем софтуер от "нулата", а да "плагиатстваме" здраво идеи, та даже и код от разни РТОС-и за които можем да намерим инфо и сорсове.
Същото важи и за стека ...

Иначе да - можем да се спасяваме по единично. До преди да стане въпрос за "съвместно правене на нещо" - аз живеех с мисълта да си ползвам Кеил компилатора, Кеил РТОС-а (има сорсове и документация), и да портна и подкарам iwIP стека, след което да го къстъмизирам според нуждите ми. (Кеил имат и стек, който не е оптимален, но работи. Е, за сега няма сорсове за него).

И тъй-като осъзнавам, че по този начин ще се окажа "женен" за Кеил - след като се повдигна темата за нещо съвместно - реших, че определено си струва да зарежа Кеил и заедно с други хора "луди" поне колкото мене да подкараме същите неща, но на базата на фри развойни средства ...

Е- ако не става - не става ... Здраве да е :)

А относно това, че хората трябва да са на една и съща "вълна" в един и същи момент - спор няма. Трябва всички да са заинтересувани от това, което правят ...

От скоро съм във форума и съжалявам, че не съм попадал на писаното от тебе относно това което правиш и си правил по писането на ртос-а ти. Отдавна съм "узрял" за подобна идея ...
Изненадан съм от ниският интерес на познатите ти към това което си им предложил ... Една идея, та даже и готова-реализирана мисля, че никога не е в повече ...


Сря Юни 24, 2009 4:28 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
Идеята за направа на RTOS, TCP/IP и т.н. ми се струва като откриването на топлата вода :wink: Примерно FreeRTOS, Microchip TCP/IP, FAT16/FAT32 библиотеките, USB Host, USB OTG, всичко работи перфектно на PIC32 :) , е вярно Ethernet е 10MBit, ама и за какво ми е повече. Според мен спираш се на нещо, започваш да го използваш и като не ти харесва нещо го променяш, и така след няколко месеца ще си го насосал са собствени нужди.

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Сря Юни 24, 2009 5:34 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
¶ написа:
Идеята за направа на RTOS, TCP/IP и т.н. ми се струва като откриването на топлата вода :wink:


Това в голяма степен важи за повечето потребители... При мен обаче имаше две "особености":
* първата е АРМ7 архитектурата, която е уникална - нямаш атомични операции, прекъсванията се забраняват сложно, нямаш индивидуални прекъсвания а един IRQ Handler и т.н. Повечето ОС-ве са писани първоначално за други архитектури и просто са портнати колкото да работят... Но естествено като не си се съобразил с особеностите, резултатите са далеч от перфектни.
* Един ОС по принцип не е малко работа, но в моя случай сравнено с останалата част от проекта е нищожна част... Съотвено можех да си го позволя и си струваше, щото като строиш висока сграда никак не е без значение върху какви основи си стъпил.

Добрият инструмент си струва инвестицията. В случая "добър" е много относително, понеже аз правих нещо по средата между "прост" и "сложен". И спрямо първите мисля че съм по-добър, а спрямо другите изобщо не съм добър... Въпросът е че на шибан контролер с 64К няма как да подкараш добър ОС и в това е целият проблем. А който си мисли, че freertos е добър RTOS си е за негова сметка :D


Сря Юни 24, 2009 7:40 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
Миро, кво се оправдаваш бе. Не дължиш никому обяснения защо си избрал да
правиш нещо. Ако има технически питания, както досега, е ОК да си приказваме
до втръсване.
Да не говорим, че писането на един scheduler (повечето от това, дето му викат
RTOS, не са много повече, ти май нещо такова ми обясни за FreeRTOS неотдавна)
отнема ден-два за грамотен човек.
Виж, писането на TCP/IP стек е повече (на мене ми отне цели 6 месеца, но го
направих така, че да не ми потрябва да го правя пак в обозримо бъдеще, а и ми беше първи).

Естествено, че който не може да пише системен софтуер ще приказва, как му стига
да свързва готови неща с няколко реда.

Както е естествено, че който не може да пише софтуер ще обяснява как му стига да сади
домати.

Нашето коте и домати не може да сади и пак е щастливо. Шарен свят, въпрос на
желания и разбира се възможности.
Никой не прави повече от това, което може....

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Сря Юни 24, 2009 8:41 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
tqi, притеснявам се да не изглеждам съмнително ;-)

но си прав де... човек не бива да се притеснява какво ще си помислят за него колегите, за да не става като в тоя виц: http://mcu-bg.com/mcu_site/viewtopic.php?p=83292#83292 :D :D :D


Сря Юни 24, 2009 8:58 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Май 17, 2006 4:22 pm
Мнения: 34
Местоположение: софия
Мнение 
miro_atc написа:
* първата е АРМ7 архитектурата, която е уникална - нямаш атомични операции


хм, миро, какво точно искаш да кажеш...? АРМ7 има неделимите инструкции SWP/SWPB... какво повече ти трябва, което не е неделимо?


Сря Юни 24, 2009 10:11 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
шопов написа:
хм, миро, какво точно искаш да кажеш...? АРМ7 има неделимите инструкции SWP/SWPB... какво повече ти трябва, което не е неделимо?


Мда... имаш една инструкция, която няма вариант да я ползваш от С, нито в thumb режим (бтв моят ОС се казва TMOS - thumb mode os). A дори в ARM моде за да направиш семафор ти трябват между 15 и 20 асемблерски инструкции (виж ARM arhitecture reference). Tова са ти 60-80 байта код. Като облечеш във функция с call и смяна на режима отиваш на 100 байта...

А една системна функция ползва семафор при влизане и при излизане. В някои случаи и повече от 1 семафор. Де Илия - на кирия? Аз повечето ми системни функции са по-кратки ;-)

при всеки друг контролер ползваш нещо от сорта на "if(lock++)" и си готов и това ти е 1 инструкция...


Сря Юни 24, 2009 11:56 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
В power това е решено по хубав начин - хем няма заключване, хем има read-modify-write
с гарантирана цялост.
С една (определна, "lwarx") ) инструкция се чете даден адрес и се създава резервация за него, после
с прочетеното се прави каквото се прави (не непременно в една инструкция),
и след това се пише с друга (stwcx.) обратно.
Последната променя статусен бит, по който може да се branch-и. Ако между
четенето и писането никой не е пипал тоя адрес, статусът е един, инак - друг.
При "друг" цялата операция се започва отначало - и така до успех.
Естествено процесорите не държат карта на цялата памет с резервации,
а само за дадени блокове - понякога цялата памет е един блок май.
Но предвид нищожните шансове някой да се намъкне да пише между две-три
съседни инструкции натоварването от цялата работа си е нулево, а печалбата
от незаключване на бъса - с всичките му съпровождащи проблеми, от конвееризация и т.н. - може
да бъде немалка и като скорост, и като сложност на хардуера.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Чет Юни 25, 2009 1:40 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
tgi, не поемай щангата толкоз навътре :wink: Между другото как е DOS-чето ? Това последното е шега разбира се, да не ми се ядосаш пак ?

Поста ми е ориентиран към Емил. Спомням си го от електротехникума като упорит човек, не е решил не е направил по-добра OS. Мисълта ми беше има ли смисъл човек да закопава 1-2г. в нещо строго специфично(miro казва, че и повече от 2г. копа), което може да намери пазар, може и да не намери ? Ако е съставна и неразделна част от някакъв голям проект, може би да, ако е за спорта пак става, ако е нещо дето ще тръшне Windwos/Linux/MAC и ще бъде на лайт иърс ахед, тоже. Т.е. според мен самоцелното писане на ОС е някак си неприемливо в днешно време, по-скоро се започва с някакъв проект, в който се систематизират нещата, постепенно с времето се прибавят нови и нови неща, примерно TCP/IP стека, файлова система някаква, на SD карта, или на USB stick, и след няколко години по край другите неща ще е налице RTOS-оса. Пък в спестеното от копане време е по-добре, както казва tgi, да се полюбуваме на мотиката и на отглеждането на домати :) Де да имах тук някоя нивичка, всяка вечер щях да съм в доматите ...

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Чет Юни 25, 2009 2:40 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
Абе ако Емил е толкова сериозен работата може и да стане ;-) И времето може и да е далеч по-кратко, ако му помагаме стъпка по стъпка какво и как да прави. Ние казваме 1-2 години щото толкова отива като нямаш опит. Аз примерно едва вчера, след ъпгред на емулатора си успях да изкарам списъка от тасковете под GDB. И като цъкнеш върху някой таск да ти показва в сорса докъде е стигнал, променливите в неговия контекст и т.н. Но ми показва само активните таскове, щото аз съм ги пръснал в различни списъци, а то поддържа само 1 списък... Ако съм го знаел това нещо навремето щях да си направя по друг начин TCB-тата, ама... И много други неща има дето човек ги разбира в последствие, затова не можеш да кажеш че ще направиш ОС от нищо за 2 дена.

За струването... за печалба е трудна работата, но той така или иначе ще затрие сума си време докато навлиза в GCC и се бори с чужди сорсове. Т.е. така или иначе има няколко месеца време за разучаване, като няма гаранция че това което разучи после ще му е удобно.


Чет Юни 25, 2009 7:46 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 76 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5, 6  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни