Список форумов Шадринский форум -> Программирование -> Общие вопросы программирования -> Приглашаю волонтёров - помочь написать ОС
Начать новую тему   Ответить на тему   вывод темы на печать

Приглашаю волонтёров - помочь написать ОС

Автор
Сообщение
moishe
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1668


Статус: Offline
СообщениеДобавлено: 2007.07.30 11:39.14
Ответить с цитатой
Приглашаю волонтёров - помочь написать операционную систему.
Кое-что уже готово, но сделать надо еще много чего.
Я, в принципе, справлюсь и один, но иногда бывает нужно с кем-то поговорить, обсудить стратегические моменты - а не с кем.
Платить не обещаю, хотя при некотором стечении обстоятельств это возможно.
Единственное, что могу твердо обещать - укажу в качестве соавторов (конечно, только тех, чей код будет включен в релиз).
Ну а с кем удастся содержательно и полезно поговорить - будут "консультантами".

Спрашивается: зачем что-то делать, если за это (скорее всего) не заплатят?
Ну, как бы вам сказать... Вот если у вас сегодня спросят: "ты что вчера делал?" - "Да так, балду пинал".
А если взяться, то через неделю можно будет на тот же вопрос ответить: "да так, ось писал". Круто?
Конечно, если у вас полная загрузка, такая, что балду пинать ну никак не получается, это предложение не для вас.

На данный момент самая актуальная задача, к которой я никак не подберусь - написать загрузчик эльфов.
(Собственно, ядро будет на этом закончено.)
Есть более отдаленная, но не менее интересная - драйвер семейства протоколов IP (icmp, udp, tcp).
Еще кучу утилит всяких надо...

Писать надо на С (без плюсплюсов) под компилятор gcc. Можно на ассемблере, но вряд ли его кто-то знает - целевая платформа НЕ писюк, а процессор - НЕ интел.

==========

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

В процессе разработки (почти готово):
- файловые операции в ядре.

В самых ближайших планах (кое-что уже начато):
- виртуальные ФС /dev и /sys;
- управление устройствами в ядре;
- сами драйверы устройств;
- системный загрузчик модулей;
- шелл;
- некоторые утилиты;
- API-функции (по мере надобности);
- одно специфическое приложение.

В дальнейших планах:
- драйвер протоколов IP;
- клиенты сетевых файловых систем;
- сервер SSH;
- клиент и сервер FTP;
- веб-сервер;
- дополнительные утилиты.

==========

Если кто заинтересуется, изложу дополнительные подробности.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Xak
Запомнил кнопки...


Пол: Пол:Муж.
Зарегистрирован: 26.11.2004
Сообщения: 218
Откуда: Тюмень

Статус: Offline
СообщениеДобавлено: 2007.07.30 15:15.49
Ответить с цитатой
Мне было бы интересно чисто для ся поглядеть любой кусок кода ядра, который ты написал. А сам я максимум что писал ето интерпритатор под LINUX и веб-сервер под WIN
_________________
ТюмГНГУ
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
moishe
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1668


Статус: Offline
СообщениеДобавлено: 2007.07.30 15:38.58
Ответить с цитатой
Да не вопрос. Менеджер процессов, он же систем шедулер.
Часть на ассемблере
/*pm.SМенеджер процессов (Process Manager) - обработчик прерывания 13 от таймера 1.*/#define __ASM__#define __SYS__#include "../blackfin/defBF532.h"#include "kernel.h"#include "api.h"#include "pll.h".extern __pm;.type __pm,function;.section .text,"ax";.align 2;.globl _pm;.type _pm,function;_pm://;сохраняем регистры в текущий стек супервизора   [--SP] = FP;   [--SP] = ASTAT;   [--SP] = (R7:0,P5:0);//;сохраняем регистры в пользовательский стек   [--USP] = FP;   [--USP] = ASTAT;   [--USP] = (R7:0,P5:0);//;запретим прерывание 13   P0 = IMASK;   R0 = [P0];   BITCLR(R0,13);   [P0] = R0;//;Следующий блок лишний, т.к. таймер запускается в режиме одиночного импульса//;достаточно запретить прерывание 13, выключить таймер и сбросить событие/*//;запретим прерывания от таймера 1   P0 = SIC_IMASK;   R0 = [P0];//   R0 &= ~TIMER1_IRQ;   BITCLR(R0,17);   [P0] = R0;*///;выключим таймер   P0 = TIMER_DISABLE;   R0 = TIMDIS1;   [P0] = R0;//;принудительно остановим таймер   P0 = TIMER_STATUS;   R0 = TIMIL1 | TRUN1;   [P0] = R0;//;загружаем в P0 адрес описателя прерванного потока   P0 = __curthr;   P0 = [P0];//;определяем, в каком режиме работал прерванный поток   R0 = B([P0+THR_FLAG_OFFSET])(Z);//_curthr->flag   R1 = THR_FLAG_SYSCALL | THR_FLAG_SYSTEM;   R2 = R0&R1;   CC = R2==0x0;   R2 = 0x40(Z);//для инкрементирования указателя стека   IF CC JUMP prevthr_user_mode;//;прерванный поток работал в режиме супервизора, восстановим пользовательский стек   R1 = USP;   R1 += R2;   USP = R1;   R1 = SP;//запомним вершину стека супервизора   JUMP prevthr_common;//;прерванный поток работал в пользовательстом режиме, восстановим стек супервизораprevthr_user_mode:   R1 = SP;   R1 += R2;   SP = R1;   R1 = USP;//запомним вершину пользовательского стекаprevthr_common:   [P0++] = R1;//сохранили вершину стека в структуру   R1 = RETI;//сюда надо будет вернуться, когда до этого потока снова дойдет очередь   [P0] = R1;//сохранили адрес возврата в структуру   [--SP] = R0;//сохранили флаг предыдущего потока в стек супервизора   [--SP] = RETS;//сохранили адрес возврата из подпрограммы   CALL __pm;//вызвали Process Manager, написанный на C (kernel.c)   RETS = [SP++];//восстановили адрес возврата   R3 = [SP++];//теперь в R3 флаг предыдущего потока    CC = R0==0x0;//функция вернула NULL - следующий поток не существует   IF CC JUMP _dummy;//вешаем систему (потом напишу принудительную перезагрузку)   P0 = R0;//_pm(void) возвращает указатель на описатель потока, который должен быть запущен   R0 = B([P0+THR_FLAG_OFFSET])(Z);//в R0 флаг следующего потока   CC = BITTST(R3,THR_BIT_SYSCALL);//CC истинно, если пред.поток работал в сисвызове   IF CC JUMP prthr_sc;   CC = BITTST(R3,THR_BIT_SYSTEM);//CC истинно, если поток был системным   IF CC JUMP prthr_sys;   CC = BITTST(R0,THR_BIT_SYSCALL);//CC истинно, если новый поток должен выполнять сисвызов   IF CC JUMP from_any_to_sc;   CC = BITTST(R0,THR_BIT_SYSTEM);//CC истинно, если новый поток должен стать системным   IF CC JUMP from_user_to_sys;enter_user_mode://;возврат в пользовательский режим - активно ровно одно прерывание   USP = [P0++];//восстановление указателя пользовательского стека из описателя   RETI = [P0];//восстановление точки возврата из прерывания   [--USP] = RETS;//сохраняем текущий адрес возврата из подпрограммы в стек   CALL _allow_pm;//вычисляем период, разрешаем прерывание 13   RETS = [USP++];//восстанавливаем адрес возврата   (R7:0,P5:0) = [USP++];//восстанавливаем регистры из пользовательского стека   ASTAT = [USP++];   FP = [USP++];   RTI;//сбрасывается последнее активное прерываниеfrom_any_to_sc://;перейти из любого режима, ниже сисвызова, в режим сисвызова   RETI = _dummy;//пользовательский режим не будет обрабатываться процессором   SP = [P0++];//восстанавливаем указатель стека супервизора из описателя   P1 = EVT14;//обработчик 14-го прерывания (сисвызов)   R1 = [P0];//назначаем по адресу возврата в поток   [P1] = R1;   RAISE 14;//возбуждаем 14-е прерывание (не было активно)enter_sys_mode://;возврат в режим обработки прерывания   [--SP] = RETS;//сохраняем адрес возврата из подпрограммы в стек супервизора   CALL _allow_pm;//вычисляем период, разрешаем прерывание 13   RETS = [SP++];//восстанавливаем адрес возврата   (R7:0,P5:0) = [SP++];//восстанавливаем регистры   ASTAT = [SP++];   FP = [SP++];   RTI;//еще как минимум одно прерывание активноfrom_user_to_sys://;переход из пользовательского режима в системный   RETI = _dummy;//работы в пользовательском режиме не будет   SP = [P0++];//восстановили указатель стека супервизора из описателя   P1 = EVT15;//адресом обработчика 15-го прерывания (системный режим)   R1 = [P0];//становится текущая точка входа в поток   [P1] = R1;   RAISE 15;//возбждается прерывание 15 (было не активно)   JUMP enter_sys_mode;prthr_sys://;предыдущий поток был системным   CC = BITTST(R0,THR_BIT_SYSCALL);//следующий поток выполняет сисвызов   IF CC JUMP from_any_to_sc;//все переходы в режим сисвызова выполняются одинаково   CC = BITTST(R0,THR_BIT_SYSTEM);//следующий поток тоже системный   IF CC JUMP save_int_level;//нужно оставить 15-е прерывание активнымfrom_sys_to_user://;перейти от системного режима к пользовательскому   RETI = enter_user_mode;   RTI;//останется активным ровно одно прерываниеsave_int_level://;остаться на прежнем уровне прерывания   SP = [P0++];//восстанавливаем указатель стека супервизора   RETI = [P0];//назначаем адрес возврата из Менеджера Процессов   JUMP enter_sys_mode;prthr_sc://;предыдущий поток выполнял сисвызов   CC = BITTST(R0,THR_BIT_SYSCALL);//следующий поток тоже выполняет сисвызов   IF CC JUMP save_int_level;//останемся в 14-м прерывании   CC = BITTST(R3,THR_BIT_SYSTEM);//предыдущий поток был системный и выполнял сисвызов   IF CC JUMP prthr_sc_sys;   CC = BITTST(R0,THR_BIT_SYSTEM);//следующий поток - системный   IF ! CC JUMP from_sys_to_user;//следующий поток - пользовательскийfrom_sc_to_sys://;переход из чистого сисвызова в системный поток   RETI = from_user_to_sys;   RTI;//возврат в 14-е прерывание, 15-е будет назначеноprthr_sc_sys://;предыдущий поток был системный и выполнял сисвызов   CC = BITTST(R0,THR_BIT_SYSTEM);//следующий поток тоже системный, но без сисвызова   IF CC JUMP from_sc_sys_to_sys;//from_sc_sys_to_user://;переход из системного потока с сисвызовом в пользовательский   RETI = from_sys_to_user;   RTI;//возврат в 14-е прерывание, 15 остается активнымfrom_sc_sys_to_sys://;переход из системного потока с сисвызовом в просто системный   RETI = save_int_level;   RTI;//возврат в 14-е прерывание, 15 остается активным//;КОНЕЦ функции _pm//;Подпрограмма, устанавливающая период таймера и разрешающая прерывания_allow_pm://;в P0 передан указатель на описатель следующего потока +4 (указатель на адрес точки возврата)//;в R0 передан флаг следующего потока (не понадобится)   R1 = B([P0+(THR_FREQ_OFFSET-4)])(Z);//поле freq - величина, обратная кванту процессорного времени   CC = R1==0x0;   IF CC JUMP allow_int;//таймер не требуется, поток сам отдаст управление (режим реального времени)//;вычислим и установим период таймера//;Период таймера равен FREQ_SCLK/TIMERx_PERIOD секунд//;Если TIMER1_PERIOD = FREQ_SCLK >> _curthr->freq,//;то _curthr->quant - это двоичный логарифм частоты срабатывания.//;quant - примерное время (частота) - количетво тактов при FREQ_CORE = 400 МГц (393216000 Гц)//;1 - 1 с (1 Гц) - 393216000//;2 - 500 мс (2 Гц) - 196608000//;3 - 250 мс (4 Гц) - 98304000//;4 - 125 мс (8 Гц) - 49152000//;5 - 63 мс (16 Гц) - 24576000//;6 - 31 мс (32 Гц) - 12288000//;7 - 16 мс (64 Гц) - 6144000//;8 - 8 мс (128 Гц) - 3072000//;9 - 4 мс (256 Гц) - 1536000//;10 - 2 мс (512 Гц) - 768000 (значение по умолчанию)//;11 - 1 мс (1 кГц) - 384000//;12 - 488 мкс (2 кГц) - 192000//;13 - 244 мкс (4.1 кГц) - 96000//;14 - 122 мкс (8.2 кГц) - 48000//;15 - 61 мкс (16.4 кГц)- 24000//;16 - 30 мкс (32.8 кГц) - 12000//;17 - 15 мкс (65.5 кГц) - 6000//;18 - 8 мкс (131.1 кГц) - 3000//;19 - 4 мкс (262.1 кГц) - 1500//;20 - 2 мкс (524.3 кГц) - 750//;20 - максимально допустимое системой значение поля freq   P0 = TIMER1_PERIOD;   R0 = FREQ_SCLK;   R0 >>= R1;   [P0] = R0;//;Следующий блок лишний, т.к. прерывание от таймера 1 всегда разрешено.   /*//;разрешим прерывания от таймера 1   P0 = SIC_IMASK;   R0 = [P0];//   R0 |= TIMER1_IRQ;   BITSET(R0,17);   [P0] = R0;*///;включим таймер   P0 = TIMER_ENABLE;   R0 = TIMEN1;   [P0] = R0;allow_int://;разрешим прерывание 13   P0 = IMASK;   R0 = [P0];   BITSET(R0,13);   [P0] = R0;   RTS;//;КОНЕЦ подпрограммы _allow_pm//;Вечно ожидающая функция_dummy:   IDDLE;   JUMP _dummy;//;КОНЕЦ функции _dummy#undef __SYS__#undef __ASM__

Часть на С
/*kernel.cЯдро системы.*/#ifndef _KERNEL_C#define _KERNEL_C#define __SYS__#include "../blackfin/cdefBF532.h"#include "kernel.h"#include "api.h"#include "syscall.h"#define switch_to_next_thread( )   asm("RAISE 13;")[тут дальше еще много чего написано]//Менеджер Процессов (фрагмент)//возвращает указатель на описатель потока, в который нужно передать управлениеvoid *_pm() {register unsigned int tind;register unsigned short i,tmp;if((_curthr->flag&THR_FLAG_NEXT)&&(_nexttid)) tind=_thr_find(_nexttid);//явно указан поток, к которому надо перейтиelse tind=THR_TAB_SIZE;//не указан или не найден_curthr->flag&=~THR_FLAG_NEXT;if(tind==THR_TAB_SIZE) {   tind=_curthr-_thrtab;//индекс только что прерванного потока   tind++;//перейдем к следующему потоку}if(tind==_qthr) tind=0;//если предыдущий был последним, перейдем в началоfor(i=tind;i<_qthr;i++) {//будем искать следующий незавершившийся поток   if(_thrtab[i].flag&THR_FLAG_EXIT) _pm_flag|=PM_THR_FLAG;//если есть завершившиеся, поставим флаг уплотнения   else break;//иначе прервемся}if(i==_qthr) {//дошли до конца   for(i=0;i<tind;i++) if(!(_thrtab[i].flag&THR_FLAG_EXIT)) break;//ищем незавершившийся сначала   if(i==tind) return(NULL);//абсолютно все потоки завершились!}if(_pm_flag&PM_THR_FLAG) {//проверим, нужно ли уплотнить таблицу потоков   switch(_thr_mutex) {//проверим мутекс   case 0xFFFF://уже захвачен      if(_thr_sem==0) {//если никто не читает таблицу         tmp=_thrtab[i].tid;//запомним идентификатор следующего потока         _qthr=pack_tab((void *)_thrtab,_qthr,sizeof(THR_ITEM),THR_FLAG_OFFSET,THR_FLAG_EXIT);//уплотним таблицу         _thr_mutex=0;//освободим мутекс         _pm_flag&=~PM_THR_FLAG;//сбросим флаг уплотнения         tind=_thr_find(tmp);//найдем индекс следующего потока в обновленной таблице         if(tind==THR_TAB_SIZE) return(NULL);//поток не найден - фатальная ошибка!      }      break;   case 0x0000: _thr_mutex=0xFFFF;//свободен - захватим; уплотнять начнем в следующий раз   }}if(_pm_flag&PM_EVT_FLAG) {//проверим, нужно ли уплотнить таблицу событий   switch(_evt_mutex) {//проверим мутекс   case 0xFFFF://уже захвачен      if(_evt_sem==0) {//если никто не читает таблицу         _qevt=pack_tab((void *)_evttab,_qevt,sizeof(EVT_ITEM),EVT_FLAG_OFFSET,EVT_FLAG_DONE);//уплотним таблицу         _evt_mutex=0;//освободим мутекс         _pm_flag&=~PM_EVT_FLAG;//сбросим флаг уплотнения      }      break;   case 0x0000: _evt_mutex=0xFFFF;//свободен - захватим; уплотнять начнем в следующий раз   }}//!!!-возможно, понадобится уплотнять _filtab и _reltabwhile(1) {//будем просматривать таблицу, пока не найдем, кому передать управление   if(tind>=_qthr) tind=0;//если последний - начнем с начала   if((_thrtab[tind].flag&(THR_FLAG_EXIT|THR_FLAG_SLEEP))==0) break;//нашли неспящий и незавершившийся поток   tind++;//перейдем к следующему}_curthr=&_thrtab[tind];return(_curthr);}//================#undef __SYS__#endif /* _KERNEL_C */
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Xak
Запомнил кнопки...


Пол: Пол:Муж.
Зарегистрирован: 26.11.2004
Сообщения: 218
Откуда: Тюмень

Статус: Offline
СообщениеДобавлено: 2007.07.30 21:29.54
Ответить с цитатой
А что самое простое планируется написать для ОС ?
_________________
ТюмГНГУ
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
moishe
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1668


Статус: Offline
СообщениеДобавлено: 2007.07.30 22:03.28
Ответить с цитатой
Не совсем понял вопрос.
В смысле, какие еще части надо дописать, но они не очень сложные?
Так осталось две части всего написать - управление устройствами и загрузку модулей в формате ELF (можно и в другом формате, но с эльфами я уже ковырялся, у меня есть мануалы и общее понимание устройства, и даже некоторый успешный опыт работы с ними, в частности, само ядро я сначала компилирую в эльф, а потом извлекаю из них бинарный код для загрузчика ядра уже собственной утилитой, так что если я сам буду писать загрузку модулей - это будет эльф, но если кто-то напишет a.out или COFF - тоже подойдет, только не exe - я в них компилировать не умею). Это что касается ядра. Кроме ядра важная часть - драйвера устройств, но это я сам, там без ассемблера, думаю, не обойтись, да и вообще, это совсем уж близко к железу, а схему я никому дать не могу, конечно.
А, еще есть драйвера файловых систем /dev и /sys. Система /dev тесно связана с поддержкой устройств в ядре, думаю, их надо фактически одновременно продумывать, вот допишу файловые операции (а это буквально дня 2-3 осталось) и сразу возьмусь за эту пару задач. Остается /sys, которую я задумал чисто для удобства, и без нее, в принципе, можно легко обойтись, ну и шелл еще. Вот, пожалуй, шелл - самое простое из оставшегося. Но я пока еще сам толком не сформулировал к нему требования, надо, само собой, чтобы он простейшие программные конструкции понимал, чтобы скрипты писать, но как что - не придумал еще.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Slin
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 17.12.2004
Сообщения: 1869


Статус: Offline
СообщениеДобавлено: 2007.07.31 08:04.27
Ответить с цитатой
Вот книжка, может пригодится кому... (торрент)
P.S. Интересно, что целевой процессор не интел, а какой? Ведь ассемблер, насколько мне известно, тесно связан с системой команд процессора... Ладно еще интел, амд - система команд во многом идентична
P.P.S. какой ассемблер используете?



Операционные системы. Разработка и реализация. Таненбаум, Вудхалл. 2006.djvu.torrent
 Описание:

Download File
 Имя файла:  Операционные системы. Разработка и реализация. Таненбаум, Вудхалл. 2006.djvu.torrent
 Размер файла:  1.69 KB
 Скачано:  715 раз(а)

Посмотреть профиль Отправить личное сообщение ICQ Number
moishe
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1668


Статус: Offline
СообщениеДобавлено: 2007.07.31 12:22.16
Ответить с цитатой
Slin писал(а):
целевой процессор не интел, а какой?
ADI Blackfin
Slin писал(а):
ассемблер, насколько мне известно, тесно связан с системой команд процессора.
Само собой.
Slin писал(а):
какой ассемблер используете?
bfin-elf-as из bfin-elf-gcc

Добавлено спустя 18 минут 12 секунд:

Эх, блин, некогда мне книжки-то читать, особенно теоретические - писать надо. Чукча, однако, не читатель, чукча - писатель...

P.S. А г-на Танненбаума я помнится читал на ту же тему году этак в 2000-м. А тут 2006. Новое творение?

P.P.S. А еще я читал открытую переписку Торвальдса с Танненбаумом. Танненбаум как-то выпустил статью в которой резко раскритиковал линукс. Дескать, и то там не так, и это не эдак, и вообще моноядро. На что Торвальдс ответил: "г-н профессор, я могу вам продемонстрировать работающее ядро, и довольно эффективное, а вы что можете продемонстрировать, кроме теоретизирований?"
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2007.07.31 12:24.21
Ответить с цитатой
moishe
тяжело писать без железки, как тестироваться?
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
moishe
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1668


Статус: Offline
СообщениеДобавлено: 2007.07.31 13:03.06
Ответить с цитатой
Железка у меня, дать я ее никому не могу, значит, я и буду тестировать. Ну и прелести инкапсуляции можно использовать - если требуется написать функцию, все входы-выходы которой известны, ее можно и на писюке тестировать. Я драйвер ФС так и тестировал. И шелл можно так же тестировать.
Впрочем, шелл можно вообще не писать, взять готовый и портировать. Подумаю об этом...
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2007.07.31 14:38.32
Ответить с цитатой
moishe
а скажи, зачем самому писать ОСь? есть же виндовс, линукс. или потому что интересно?
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
moishe
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1668


Статус: Offline
СообщениеДобавлено: 2007.07.31 15:13.37
Ответить с цитатой
Ну, мы тут (на заводе) всякие железяки делаем. И становятся они все хитрее и разнообразнее, и вроде как надо на них уже какие-то ОСи ставить, иначе тяжело получается. А брать готовую - это ж надо портировать. Да и не любая же подойдет, потому как надо риалтайм, или около того. Линукс по этому критерию отпадает. Да и тяжел он. Я искал подходящую и вроде бы даже нашел - RTEMS называется. Но... Побоялся браться за портирование. Кучу времени потеряю - а вдруг не получится? Или не подойдет? А времени не так много. И решил свою написать - она-то точно подойдет, и разбираться я в ней буду всяко лучше, чем в чужой, и если что, подстрою ее как надо. Вот и пишу.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2007.07.31 15:15.13
Ответить с цитатой
moishe
понятно. а пробывал винду ставить?
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
moishe
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1668


Статус: Offline
СообщениеДобавлено: 2007.07.31 15:30.11
Ответить с цитатой
andy ice
Шутка юмора такая?
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2007.07.31 15:34.29
Ответить с цитатой
moishe
http://www.microsoft.com/windows/embedded/default.mspx
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
moishe
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1668


Статус: Offline
СообщениеДобавлено: 2007.07.31 16:10.36
Ответить с цитатой
За полчаса не нашел, где там перечислены поддерживаемые платформы. Да, пожалуй, поздно уже перестраиваться. Когда в марте искал подходящую ОСь, на сайте Analog Devices про виндовс не было ни слова сказано. Про RTEMS было написано, будто портирована, а на самом деле ее только собирались портировать, не ждать же, когда сподобятся. А винда даже не упоминалась.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2007.07.31 16:13.10
Ответить с цитатой
moishe
я тоже долго тыкался, но нашел упоминание про твой проц.
ps: я бы просто попробывал. они дают триальную версию на 120 дней
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Dio
Шаман-заводчанин


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 29757


Статус: Offline
СообщениеДобавлено: 2007.07.31 20:07.56
Ответить с цитатой
moishe
а имеет смысл изобретать велосипед? Не, ну иногда нужно из куска железа выпилит ключ для 21-гранной гайки. andy ice дело говорит. Правда могут потом возникнуть проблемы с лицензиями наверное, но это решабельно Cool
_________________
Йа - водоросль.
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2007.07.31 20:09.10
Ответить с цитатой
Dio
3 доллара на проданное устройство, если я правильно понял чОрные буковки
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Dio
Шаман-заводчанин


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 29757


Статус: Offline
СообщениеДобавлено: 2007.07.31 20:10.58
Ответить с цитатой
Кстати, если есть желание, могу продемонстрировать изумительный Программно-Технический Комплекс, собранный на Линуксе.
_________________
Йа - водоросль.
Посмотреть профиль Отправить личное сообщение
moishe
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1668


Статус: Offline
СообщениеДобавлено: 2007.07.31 20:53.51
Ответить с цитатой
Dio писал(а):
а имеет смысл изобретать велосипед?
Вот! Ключевая фраза. Думаю, что имеет. Нельзя сразу изобрести какой-нибудь там антигравитационный двигатель, сначала таки придется изобрести велосипед, или хотя бы самолет. Понятно выражаюсь? Не изобретая "велосипеда" не изобретешь вообще ничего.
Всегда есть такая дилемма - использовать готовое решение, подточив его под себя (а обычно выходит - себя под него), или делать свое. Но ведь готовые решения, прежде чем стать таковыми, сначала были идеями, потом проектами, потом бета-версиями, и т.д., и наконец превратились в те самые готовые решения, потому что нашлись люди, которые взялись и СДЕЛАЛИ ЭТО.
Я не считаю поставленную перед собой задачу непосильной. И я даже не знаю, что будет быстрее - адаптация готового или написание с нуля, причем полагаю, что мое решение будет заведомо эффективнее. Так почему я должен от него отказываться в пользу Микрософта?

andy ice писал(а):
я бы просто попробывал
Попробовать, конечно, можно. Но, видимо, уже не в этой жизни. Я честно пытался загрузить линукс на нашу железяку, благо, он-то под блэкфин портирован самой фирмой ADI, но столкнулся с существенными проблемами уже на этапе загрузчика ядра, и стало совершенно ясно, что портирование не просто под проц, а под архитектуру - это задача так запросто с наскока не решаемая, нужны месяцы труда, и даже сложно себе представить, какие грабли вылезут в будущем, например, в связи с принципиальной не-реалтаймностью линукса, и еще бог знает чем. А свою систему я уже сейчас полностью держу в голове, знаю в ней каждый закуток, и это - большой плюс.

Короче говоря, этап Внедрения Готовых Решений для меня уже пройден и возвращаться к нему - только терять время. А может и не только время.

Но все равно, спасибо за заботу.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2007.07.31 21:42.27
Ответить с цитатой
moishe
я тебя понимаю. ибо примерно тоже самое в своей работе осчусчаю. удачи в движении, язык ЦЕ не люблю, потому учайствовать не буду. если будут идеолого-практические проблемы - обращайся Wink
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Dio
Шаман-заводчанин


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 29757


Статус: Offline
СообщениеДобавлено: 2007.07.31 22:00.26
Ответить с цитатой
moishe
фактически умоляю. Попробуй. Сам по этому темному коридору с граблями ходил. Оказываетсо что кто то когда то нечто подобное решал.
Да. Вы напишете свою ось. Уникальную. С копирайтами или заГНУтую и все такое. НО! Она будет заточена под одну конкретную железяку. Теперь представьте на секундочку, что потребители железяки на следующий день после сдачи потребовали к примеру поддержку GPRS протокола, или нечто ОКС-7 подобное... . Ваши действия? Опять кипят мозги, плавяццо клавиши... .
Вы фанатик. Я Вас реально уважаю.
_________________
Йа - водоросль.
Посмотреть профиль Отправить личное сообщение
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2007.07.31 22:13.08
Ответить с цитатой
не... я думаю что заказчикам легче мойшу оплатить, чем потом за каждую железку 3 уе отстегивать
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Dio
Шаман-заводчанин


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 29757


Статус: Offline
СообщениеДобавлено: 2007.07.31 22:24.00
Ответить с цитатой
andy ice писал(а):
заказчикам легче мойшу оплатить, чем потом за каждую железку 3 уе отстегивать

Вот это - то и ужасно. Sad

Добавлено спустя 6 минут 56 секунд:

moishe
Вы этта, обращайтесь если что Wink
_________________
Йа - водоросль.
Посмотреть профиль Отправить личное сообщение
moishe
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1668


Статус: Offline
СообщениеДобавлено: 2007.07.31 22:40.26
Ответить с цитатой
Dio писал(а):
Оказываетсо что кто то когда то нечто подобное решал.
Да. И я даже знаю кто. Возможно, войду с ними в контакт, когда получу реально работающий код.
Dio писал(а):
Она будет заточена под одну конкретную железяку.
Стараемсо предусмотреть возможные направления развития.
Dio писал(а):
потребовали к примеру поддержку GPRS протокола
Будете смеяться, но уже.
Dio писал(а):
Вы фанатик.
Да не фанатик я. Я просто программист в расцвете своих творческих сил.
andy ice писал(а):
заказчикам легче мойшу оплатить, чем потом за каждую железку 3 уе отстегивать
Это без сомнения. "Надо бы купить вот такую софтину..." - "Дык ты программист, или кто? Программист - так программируй!" Это не на теперешней работе, правда, на предыдущей, но это распространенная позиция. Хотя, другая крайность, похоже, входит в моду: "Нет-нет, никакой самодеятельности - только ПРОФЕССИОНАЛЬНЫЙ софт!" В результате потенциально очень сильные программисты так ничего и не создают.

Еще раз спасибо за поддержку.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
pva
Освоившийся


Пол: Пол:Муж.
Зарегистрирован: 09.01.2005
Сообщения: 83


Статус: Offline
СообщениеДобавлено: 2007.07.31 22:57.03
Ответить с цитатой
Dio писал(а):
Теперь представьте на секундочку, что потребители железяки на следующий день после сдачи потребовали к примеру поддержку GPRS протокола, или нечто ОКС-7 подобное...

Кстати, GPRS,GPS,ОКС-7 уже была в ТЗ. Некая гибкость конечно должна быть предусмотрена, и она аппаратно предусмотрена, насколько это это было возможно на момент создания проекта. Все не учтешь.

Добавлено спустя 3 минуты 12 секунд:

Dio писал(а):
Кстати, если есть желание, могу продемонстрировать изумительный Программно-Технический Комплекс, собранный на Линуксе.

У меня есть желание посмотреть
Посмотреть профиль Отправить личное сообщение ICQ Number
Dio
Шаман-заводчанин


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 29757


Статус: Offline
СообщениеДобавлено: 2007.08.01 07:06.24
Ответить с цитатой
pva писал(а):
Все не учтешь.

Это Вы заказчику объясните Laughing. Сколько к примеру разновидностей протокола Е1, или того же модного SIP. И почему Алкателевский Е1 отличаеццо от Семеновского Cool
pva писал(а):
У меня есть желание посмотреть

Не вопрос. После 17/08 спишемсо
_________________
Йа - водоросль.
Посмотреть профиль Отправить личное сообщение
VolF
подонок


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 3043
Откуда: Rammstein, GmbH

Статус: Offline
СообщениеДобавлено: 2007.08.01 09:46.58
Ответить с цитатой
Dio писал(а):
Кстати, если есть желание, могу продемонстрировать изумительный Программно-Технический Комплекс, собранный на Линуксе.

в смысле вы его дадите пощупать руками? Smile
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
Dio
Шаман-заводчанин


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 29757


Статус: Offline
СообщениеДобавлено: 2007.08.01 12:55.28
Ответить с цитатой
VolF писал(а):
В смысле вы его дадите пощупать руками?

Why not?
_________________
Йа - водоросль.
Посмотреть профиль Отправить личное сообщение
VolF
подонок


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 3043
Откуда: Rammstein, GmbH

Статус: Offline
СообщениеДобавлено: 2007.08.02 08:45.07
Ответить с цитатой
Dio
ну хз. я почему-то подумал, что вы ограничитесь фотками..
короче, мне тоже интересно посмотреть этот девайс Smile
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
Страница 1 из 2
Начать новую тему   Ответить на тему   вывод темы на печать
На страницу 1, 2  След.
Показать сообщения:   
Список форумов Шадринский форум -> Программирование -> Общие вопросы программирования -> Приглашаю волонтёров - помочь написать ОС

 
Перейти: 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы