инет на спецтруме (на зависть всем)

Всё остальное

Postby lvd » 20 Jul 2007, 17:04

Budder wrote:На Спеке в этом нет необходимости. И без них можно обойтись.

Это ты привык, потому что всё поллингом делаешь и без оси многозадачной. Сколько времени цдвод гонит бошку из 1 конца в другой?

Budder wrote:Повысить скорость и буферизовать передачу данных. Да и прерывания тогда вовсе не нужны будут для такового обмена (аля высвободить ресурсы).

Да, и поллинг опять? Наличие прерывания не отменяет буфер. Пришло прерывание - вошёл в обработчик - сожрал весь буфер.
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7227
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby Budder » 20 Jul 2007, 19:02

lvd wrote:Это ты привык, потому что всё поллингом делаешь и без оси многозадачной. Сколько времени цдвод гонит бошку из 1 конца в другой?

Можно делать проверку события на прерываниях (те что 50 раз в секунду). А пока событие не произошло делать чтонить другое.
Так же можно производить проверку раз в цикл какой либо, но тут уже задержки постоянно разные тогда будут. (К примеру в цикле опроса клавы)
http://forum.tslabs.info
MGN Group
User avatar
Budder
 
Posts: 462
Joined: 20 Jul 2007, 14:05
Group: Registered users

Postby lvd » 20 Jul 2007, 22:37

Budder wrote:Можно делать проверку события на прерываниях (те что 50 раз в секунду).


Бред, почему бы не делать проверку события на СПЕЦИАЛЬНОМ ПРЕРЫВАНИИ, которое это событие вызывает?

Budder wrote:Так же можно производить проверку раз в цикл какой либо, но тут уже задержки постоянно разные тогда будут. (К примеру в цикле опроса клавы)

А это и называется "поллинг".
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7227
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby MozG » 21 Jul 2007, 00:03

Вот мое видение ситуации:

Предварительный набросок протокола по шине - похуй мне какой:

>> opensocket
<< socket id (word)

>> send
<< num sended bytes (word)

>> recieve
<< num recieved bytes (word)

>> closesocket
<< ok

На пц я софтину напишу за пару дней. Кучу коннектов на спеке сэмулировать можно передавая идентификатор сокета на который идет операция отправки/получения. Только вот прием данных придется лепить в основном цикле программы на спеке. Или перывать на какоенибудь прерывание если там есть свободные. А так - все банально. Для отладки нужно сначала на пц палюбак - а уж потом армы всякие.
all straight
MozG
 
Posts: 9
Joined: 10 Apr 2007, 17:19
Group: Registered users

Postby lvd » 21 Jul 2007, 02:56

Mozg, +1! =)

Конкретизация как результат размышлений за некоторые время.

Со стороны спектрума имеется до 255 "соединений" (номера 1-255). По сериальному порту могут передаваться данные в пц - по одному из соединений, и приниматься с пц аналогично. Данные каждого соединения передаются пакетами длиной от 0 до 256 байт. Формат пакета:
+0.byte: номер соединения (1-255) или 0 - спец. случай
+1.byte: статус пакета (пакет с данными, закрытие соединения, открытие соединения, етц - требует конткретизации)
+2.byte: длина данных, если +1 позволяет передать данные, 0 - длина 256 байт
далее собственно данные.

со спека на пц передаются данные без какого-либо контроля, считается, что пц принимает все пакеты и байты не теряются.
с пц на спек 2 метода контроля:
1. на уровне контроллера сериального порта (для случая атм - это at89c51 с буфером приёма) "затыкается фонтан" (байты с пц) сигналом CTS.
2. спек анализирует ВСЕ принятые данные и пакеты. Если спеку некуда положить очередную порцию даных в очередном пакете в данном соединении (переполнение буфера, например), он запоминает этот факт для данного соединения, и посылает пц требование ПРЕКРАТИТЬ слать данные в данном соединении. В дальнейшем когда буфер освободится, посылает требование пц ПРОДОЛЖИТЬ посылку данных. Она продолжается с того же самого пакета.

Открывает и закрывает соединения исключительно спектрум.

Далее, уровнем выше. Данные в соединении. Они являются подмножеством протокола sock5, только не по сокетам как обычно, а по этим самым соединениям. Сначала спек передаёт запрос на открытие коннекта с заданным ойпи (или фкдн) и портом. пц отвечает что мол открыто, или что мол хренвам. Если открыто - то дальнейшие данные в данном соединении являются тем, что по тому сокету течёт. Предусмотрено закрытие соединения со стороны спека и информирование спека о закрытии соединения со стороны сервера или пц.

Собственно, всё.

Не предусмотрено методов контроля целостности по сериальному порту: считается, что байты не теряются и соотвественно не происходит рассинхронизации. Однако, можно считать, например, передачу пакета с номером соединения 0 (см. выше, 0 - спец. номер) сигналом к инициализации - все возмножно существующие соединения забываются. Таким образом, если произошла глобальная жопа, надо просто слать 0 до опупения (точнее, отослать более 256+3 нулей).
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7227
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby CHRV » 21 Jul 2007, 11:57

Не предусмотрены UDP пакеты (например получение адреса хоста по имени), предлагаю 0 - номер соединения - UDP пакеты.
Многое есть здесь: www.nedopc.com
User avatar
CHRV
Желесяка
 
Posts: 2133
Joined: 15 Apr 2007, 21:52
Group: Registered users

Postby lvd » 21 Jul 2007, 13:17

CHRV wrote:Не предусмотрены UDP пакеты (например получение адреса хоста по имени), предлагаю 0 - номер соединения - UDP пакеты.

сокс5 умеет резолвить сам - http://tools.ietf.org/html/rfc1928

Думаю, удп на спектруме избыточно - зачем (какие содержательные методы использования - в каких программах-протокола-етц?).

PS: гы, к тому же сокс5 и удп умеет =)

PPS: вообще говоря, то что я описал - это не есть тцпип или что-либо другое. Это есть именно некие "соединения". Гонять по ним хоть удп, хоть ицмп, хоть что-либо вообще другое - кто запрещает?...
Last edited by lvd on 21 Jul 2007, 13:29, edited 1 time in total.
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7227
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby demon_zx » 21 Jul 2007, 17:00

кому оно нафиг надо так заморачиваться? (кому надо тот заморачивается а не обсуждает)
ts_player, is cdcopy, is mine, zx-ferrum ect. (не помню)
demon_zx
 
Posts: 23
Joined: 19 Jul 2007, 20:01
Group: Registered users

Postby lvd » 21 Jul 2007, 18:32

demon_zx wrote:кому оно нафиг надо так заморачиваться? (кому надо тот заморачивается а не обсуждает)

А кому делать нехрен во всех дырках ноет "кому оно надо?"...
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7227
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby demon_zx » 21 Jul 2007, 21:52

вот сделай, некое подобие тогда и можно обсуждать, а так это очередная "химера"
ts_player, is cdcopy, is mine, zx-ferrum ect. (не помню)
demon_zx
 
Posts: 23
Joined: 19 Jul 2007, 20:01
Group: Registered users

PreviousNext

Return to Other

Who is online

Users browsing this forum: No registered users and 1 guest

cron