http://wiki.kolibrios.org/api.php?action=feedcontributions&user=Art+zh&feedformat=atomKolibriOS wiki - User contributions [en]2024-03-29T01:57:34ZUser contributionsMediaWiki 1.35.7http://wiki.kolibrios.org/index.php?title=FHT/ru&diff=5497FHT/ru2020-07-30T20:57:52Z<p>Art zh: FHT</p>
<hr />
<div>Реализация одного из самых эффективных алгоритмов 1-мерного преобразования Хартли для FPU x87+. <br />
<br />
Не входит в официальный дистрибутив и имеет GPL-подобную лицензию, разрешающую свободное копирование, модификацию и коммерческое использование кода ''только в среде КолибриОС''. Портирование в другие ОС без разрешения автора ''не допускается''.<br><br />
<br />
Преобразование Хартли ([http://ru.wikipedia.org/wiki/%D0%94%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A5%D0%B0%D1%80%D1%82%D0%BB%D0%B8 БПХ]) является полным аналогом известного преобразования Фурье ([http://ru.wikipedia.org/wiki/%D0%94%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A4%D1%83%D1%80%D1%8C%D0%B5 БПФ]), но выполняется в вещественном пространстве по базису функции Хартли<br />
<br />
'''Cas ''x'' = Cos ''x'' + Sin ''x'' '''.<br />
<br />
Переход с вещественного базиса Хартли в комплексный базис Фурье [https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A5%D0%B0%D1%80%D1%82%D0%BB%D0%B8#%D0%A1%D0%B2%D1%8F%D0%B7%D1%8C_%D1%81_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_%D0%A4%D1%83%D1%80%D1%8C%D0%B5 тривиален] (как и обратный переход).<br><br />
Для преобразования Хартли требуется вдвое меньше памяти, чем для БПФ той же размерности; причем в большинстве реализаций БПХ вычисляется на 10-40% быстрее аналогичного БПФ. <br><br />
Информация о программе [http://board.kolibrios.org/viewtopic.php?f=9&t=1518 здесь]<br />
<br />
Скачать можно с [ftp://kolibrios.org/users/art_zh/FHT ftp://kolibrios.org/users/art_zh]<br />
<br />
==Автор==<br />
[[User:Art_zh|art_zh]]; Copyright (C) A.Jerdev, 2010-20<br />
{{Образование}}<br />
[[Category:Образование]]<br />
[[Category:Программы на ассемблере]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=SysFn62/ru&diff=5492SysFn62/ru2020-04-12T12:28:49Z<p>Art zh: Reverted edits by IgorA (talk) to last revision by Art zh</p>
<hr />
<div>'''Функция 62 - пользовательский доступ к PCI.<br />
<br />
=== Подфункция 0 - получить версию PCI-интерфейса. ===<br />
<br />
''Параметры:''<br />
* eax = 62 - номер функции<br />
* bl = 0 - номер подфункции<br />
<br />
''Возвращаемое значение:''<br />
* eax = -1 - доступ к PCI запрещён; иначе<br />
* ah.al = версия PCI-интерфейса (ah=версия, al=подверсия)<br />
* старшее слово eax обнулено<br />
<br />
''Замечания:''<br />
* Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 функции 21.<br />
* Если PCI BIOS не поддерживается, то значение ax неопределено.<br />
<br />
=== Подфункция 1 - получить номер последней PCI-шины. ===<br />
<br />
''Параметры:''<br />
* eax = 62 - номер функции<br />
* bl = 1 - номер подфункции<br />
<br />
''Возвращаемое значение:''<br />
* eax = -1 - доступ к PCI запрещён; иначе<br />
* al = номер последней PCI-шины; оставшиеся байты eax разрушаются<br />
<br />
''Замечания:''<br />
* Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 функции 21.<br />
* Если PCI BIOS не поддерживается, то значение al неопределено.<br />
<br />
=== Подфункция 2 - Получить механизм обращения к конфигурационному пространству PCI. ===<br />
<br />
''Параметры:''<br />
* eax = 62 - номер функции<br />
* bl = 2 - номер подфункции<br />
<br />
''Возвращаемое значение:''<br />
* eax = -1 - доступ к PCI запрещён; иначе<br />
* al = механизм (1 или 2); прочие байты eax разрушаются<br />
<br />
''Замечания:''<br />
* Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 функции 21.<br />
* Механизм обращения выбирается в соответствии с характеристиками оборудования.<br />
* Подфункции чтения и записи автоматически работают с выбранным механизмом.<br />
<br />
=== подфункции 4,5,6 - прочитать PCI-регистр. ===<br />
<br />
''Параметры:''<br />
* eax = 62 - номер функции<br />
* bl = 4 - читать байт<br />
* bl = 5 - читать слово<br />
* bl = 6 - читать двойное слово<br />
* bh = номер PCI-шины<br />
* ch = dddddfff, где ddddd = номер устройства на шине, :fff = номер функции устройства<br />
* cl = номер регистра (должен быть чётным для bl=5, делиться на 4 для bl=6)<br />
<br />
''Возвращаемое значение:''<br />
* eax = -1 - ошибка (запрещён доступ к PCI или неподдерживаемые параметры); иначе<br />
* al/ax/eax (в зависимости от запрошенного размера) содержит данные; оставшаяся часть регистра eax разрушается<br />
<br />
''Замечания:''<br />
* Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 функции 21.<br />
* Механизм доступа 2 поддерживает только 16 устройств на шине и игнорирует номер функции. Получить механизм доступа можно вызовом подфункции 2.<br />
* Некоторые регистры стандартны и существуют для всех устройств, некоторые определяются конкретным устройством. Список первых входит, например, в известный Interrupt List by Ralf Brown ([http://www.pobox.com/~ralf/files.html], [ftp://ftp.cs.cmu.edu/afs/cs/user/ralf/pub/]); список вторых должен быть указан в документации по устройству.<br />
<br />
=== подфункции 8,9,10 - записать в PCI-регистр. ===<br />
<br />
''Параметры:''<br />
* eax = 62 - номер функции<br />
* bl = 8 - писать байт<br />
* bl = 9 - писать слово<br />
* bl = 10 - писать двойное слово<br />
* bh = номер PCI-шины<br />
* ch = dddddfff, где ddddd = номер устройства на шине, :fff = номер функции устройства<br />
* cl = номер регистра (должен быть чётным для bl=9, делиться на 4 для bl=10)<br />
* dl/dx/edx (в зависимости от запрошенного размера) содержит данные для записи<br />
<br />
''Возвращаемое значение:''<br />
* eax = -1 - ошибка (запрещён доступ к PCI или неподдерживаемые параметры)<br />
* eax = 0 - успешно<br />
<br />
''Замечания:''<br />
* Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 функции 21.<br />
* Механизм доступа 2 поддерживает только 16 устройств на шине и игнорирует номер функции. Получить механизм доступа можно вызовом подфункции 2.<br />
* Некоторые регистры стандартны и существуют для всех устройств, некоторые определяются конкретным устройством. Список первых входит, например, в известный Interrupt List by Ralf Brown; список вторых должен быть указан в документации по устройству.<br />
<br />
----<br />
<br />
=== подфункция 11 - инициализировать доступ к MMIO ===<br />
<br />
''Параметры:''<br />
* eax = 62 - номер функции<br />
* bl = 11 - номер подфункции;<br />
* cx = BDF-адрес PCI-устройства (Bus:8, Device:5, Function:3 = bbbbbbbb dddddfff)<br />
<br />
''Возвращаемое значение:''<br />
* eax = -1 - доступ к PCI запрещён; <br />
* eax = -2 - доступ к MMIO-блокам устройства не разрешён; <br />
* eax = -3 - ошибка аллокации пользовательской дин. памяти; иначе<br />
* eax = размер доступной динамической памяти.<br />
<br />
''Замечания:''<br />
* Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 функции 21.<br />
* В стандартном ядре значение cx (BDF-адрес устройства) должно совпадать с системной ''константой'' mmio_pci_addr.<br />
* В embedded-ядре параметр cx устанавливает новое значение системной ''переменной'' mmio_pci_addr.<br />
<br />
=== подфункция 12 - получить линейный адрес MMIO-блока ===<br />
<br />
''Параметры:''<br />
* eax = 62 - номер функции<br />
* bl = 12 - номер подфункции<br />
* bh = номер BAR-регистра в конфигурационной зоне PCI <br />
* ecx = размер запрашиваемого MMIO-блока (в байтах)<br />
* edx = смещение (в 4K-страницах!) в физическом MMIO-блоке <br />
<br />
''Возвращаемое значение:''<br />
* eax = -1 - доступ к PCI запрещён; <br />
* eax = -2 - неверный номер BAR-регистра; <br />
* eax = -3 - BAR не содержит адреса IO;<br />
* eax = -4 - BAR адресует ''порты'' IO;<br />
* eax = -5 - ошибка аллокации; иначе<br />
* eax = начальный адрес MMIO в адресном пространстве приложения.<br />
<br />
''Замечания:''<br />
* Предварительно должен быть разрешён низкоуровневый доступ к PCI для приложений подфункцией 12 функции 21.<br />
* Адрес PCI-устройства задается системной константой (в embedded-версии ядра - системной ''переменной'') mmio_pci_addr.<br />
* Предоставленный диапазон линейных адресов должен освобождаться посредством вызова подфункции 13<br />
<br />
==== специальная подподфункция 12-DA - получить линейный адрес статического DMA-буфера ====<br />
<br />
Вызов подфункции 12 с bh=0xDA используется в [[EmbeddedKOS/ru|embedded]]-версиях КолибриОС для высокоскоростной передачи данных в режиме захвата шины (Bus Master DMA).<br />
<br />
Подробное описание функции приведено [[SubFn62-DA/ru|здесь]].<br />
<br />
=== подфункция 13 - освободить линейные адреса MMIO ===<br />
<br />
''Параметры:''<br />
* eax = 62 - номер функции<br />
* bl = 13 - номер подфункции<br />
* ecx = начальный адрес освобождаемого MMIO-блока в адресном пространстве приложения<br />
<br />
''Возвращаемое значение:''<br />
* eax = 1 - блок успешно освобожден; <br />
<br />
''Замечания:''<br />
* Предварительно приложению должен быть выделен uMMIO-блок (подфункцией 12)<br />
<br />
{{System_functions}}<br />
[[Category: SysCalls]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=EmbeddedKOS&diff=5469EmbeddedKOS2019-09-21T22:51:39Z<p>Art zh: Exokernel description updated</p>
<hr />
<div>== Embedded-KOS ==<br />
<br />
As it was shown (see for example [http://board.kolibrios.org/viewtopic.php?t=897 KolibriOS for Manufacturing control]), KolibriOS can be successfully used in wide range of data acquisition and process control systems.<br /><br />
<br />
A compact open-source kernel, a simple and convenient minimalistic graphics subsystem, fairly developed user interface, very capable low-level system services, support of popular network protocols and filesystems - all this set of features makes KolibriOS a perspective embedded OS.<br /><br />
<br />
"Kolibri-A" branch-project has been started in July 2010 as an attempt to resolve numerous problems related. <br />
<br />
'''NB:''' the '''A''' letter means its code will be tied to AMD/HT architecture; particularly to a well-documented AMD chipsets ''NB780/SB700'' and ''Fusion/Hudson''. Other platforms might not be supported in the nearest future...<br /><br />
<br />
Note also that some specific features of ''Kolibri-A'' are 100% experimental:<br />
- you're warned you can use or test this branch on your own risk, and<br />
- you should realise that some of these features will never be merged to the main ''KolibriOS'' trunk.<br />
<br />
'''Specific features of Kolibri-A'''<br /><br />
* convenient and very powerful [https://en.wikipedia.org/wiki/Exokernel exokernel] API functions;<br />
* memory-mapped Extended PCIe configuration space and Root Complex registers accessible to userspace applications;<br />
* user software can request access to device-specific PCI BAR regions; <br />
* static system buffer (8Мb) dedicated for DMA operations;<br />
* burst-DMA mode (PCI) and "long" PCI-express packets support;<br />
* an RT-optimized memory manager;<br />
* handling MSI interrupts with full access to APIC-space;<br />
* direct power control (ACPI bypass);<br />
* faster 32bpp graphics;<br />
* experimental ''non-scalable'' vector fonts (smaller and faster than standard vector and bitmap fonts);<br />
* optional ROM-bootloader for diskless systems);<br />
* extended API with faster system calls. <br /></div>Art zhhttp://wiki.kolibrios.org/index.php?title=Main_Page&diff=5468Main Page2019-09-21T22:00:38Z<p>Art zh: wiki links added</p>
<hr />
<div><!-- {{{Languages}}} WTF? --><br />
{{Infobox_OS |<br />
name = KolibriOS |<br />
logo = [[Image:logo_100.png|KolibriOS logo]]|<br />
screenshot = [[Image:KolibriOS.png|250px]]|<br />
caption = KolibriOS desktop|<br />
developer = [http://www.kolibrios.org/?p=ContactUs KolibriOS Project Team]|<br />
working_state = Active |<br />
kernel_type = [http://en.wikipedia.org/wiki/Monolithic_kernel Monolithic kernel] |<br />
license = [[GNU General Public License|GPL]] |<br />
website = [http://www.kolibrios.org www.kolibrios.org] |<br />
}}<br />
<br />
KolibriOS is an [http://en.wikipedia.org/wiki/Open-source_software open source] [http://en.wikipedia.org/wiki/Operating_system operating system] for 32-bit [http://en.wikipedia.org/wiki/x86_architecture x86] computers based on [http://en.wikipedia.org/wiki/MenuetOS MenuetOS], written entirely in [http://en.wikipedia.org/wiki/FASM Assembler/FASM].<br />
<br />
'''IMPORTANT:''' Help KolibriOS development with you ideas and contribution!<br />
<br />
<center><br />
{| align="center" class="wikitable"<br />
![http://www.kolibrios.org/ Home]<br />
![[FAQ|FAQ]]<br />
|-<br />
![http://board.kolibrios.org/ Forum]<br />
![[HowTo|Documentation]]<br />
|-<br />
![http://builds.kolibrios.org/ Nightly Builds]<br />
![[Development|Development]]<br />
|-<br />
![http://bugs.kolibrios.org/ Bug Tracker]<br />
![[Kolibri_tomorrow|Wanted Features]]<br />
|-<br />
![http://websvn.kolibrios.org/ Source Repository]<br />
![[Applications|Applications]]<br />
|-<br />
![http://ftp.kolibrios.org/ File Repository]<br />
![[Hardware_Support|Hardware Support]]<br />
|-<br />
!<br />
![[Special:Categories|All categories]]<br />
|}<br />
</center><br />
<br />
== KolibriOS Features ==<br />
* A [http://en.wikipedia.org/wiki/Monolithic_kernel monolithic] [http://en.wikipedia.org/wiki/Preemption_(computing) preemptive] [http://en.wikipedia.org/wiki/Kernel_(computer_science) kernel] that is less than 100 kilobytes in size, complete with streams, parallel execution of system calls, a USB and [[New_stack|TCP/IP]] stack.<br />
* Speed: Thanks to being (carefully) written in Assembler, it's very fast.<br />
* Size: KolibriOS is very small - The kernel and most of the programs fit on a 1.44MB floppy disk!<br />
* Filesystem support: Read/write support for FAT16/32 (with long file names) and ext2/3/4, read-only support for NTFS, XFS and CDFS(ISO9660).<br />
* Lightweight: Kolibri boots on any computer that has a Pentium (i586) compatible processor and at least eight megabytes of RAM.<br />
* Hardware support: A lot of the popular sound, network and graphics cards are supported (see [[Hardware_Support|supported hardware list]])<br />
* Comes with a development kit (code editor with [http://en.wikipedia.org/wiki/FASM FASM] macro-assembler integrated).<br />
<br />
== Branches ==<br />
<br />
* [[EmbeddedKOS|Kolibri-A]] - an [https://en.wikipedia.org/wiki/Exokernel exokernel] version of KolibriOS for hardware engineers and driver developers<br />
<br />
<!-- Categories --><br />
[[Category:operating systems]]<br />
<br />
<!-- Interlang --<br />
[[es:KolibriOS]]<br />
[[et:KolibriOS]]<br />
[[pl:KolibriOS]]<br />
[[ru:KolibriOS]]<br />
[[uk:KolibriOS]]<br />
--></div>Art zhhttp://wiki.kolibrios.org/index.php?title=Main_Page&diff=5467Main Page2019-09-21T21:45:06Z<p>Art zh: old GSoC-18 link scrapped</p>
<hr />
<div><!-- {{{Languages}}} WTF? --><br />
{{Infobox_OS |<br />
name = KolibriOS |<br />
logo = [[Image:logo_100.png|KolibriOS logo]]|<br />
screenshot = [[Image:KolibriOS.png|250px]]|<br />
caption = KolibriOS desktop|<br />
developer = [http://www.kolibrios.org/?p=ContactUs KolibriOS Project Team]|<br />
working_state = Active |<br />
kernel_type = [http://en.wikipedia.org/wiki/Monolithic_kernel Monolithic kernel] |<br />
license = [[GNU General Public License|GPL]] |<br />
website = [http://www.kolibrios.org www.kolibrios.org] |<br />
}}<br />
<br />
KolibriOS is an [http://en.wikipedia.org/wiki/Open-source_software open source] [http://en.wikipedia.org/wiki/Operating_system operating system] for 32-bit [http://en.wikipedia.org/wiki/x86_architecture x86] computers based on [http://en.wikipedia.org/wiki/MenuetOS MenuetOS], written entirely in [http://en.wikipedia.org/wiki/FASM Assembler/FASM].<br />
<br />
'''IMPORTANT:''' Help KolibriOS development with you ideas and contribution!<br />
<br />
<center><br />
{| align="center" class="wikitable"<br />
![http://www.kolibrios.org/ Home]<br />
![[FAQ|FAQ]]<br />
|-<br />
![http://board.kolibrios.org/ Forum]<br />
![[HowTo|Documentation]]<br />
|-<br />
![http://builds.kolibrios.org/ Nightly Builds]<br />
![[Development|Development]]<br />
|-<br />
![http://bugs.kolibrios.org/ Bug Tracker]<br />
![[Kolibri_tomorrow|Wanted Features]]<br />
|-<br />
![http://websvn.kolibrios.org/ Source Repository]<br />
![[Applications|Applications]]<br />
|-<br />
![http://ftp.kolibrios.org/ File Repository]<br />
![[Hardware_Support|Hardware Support]]<br />
|-<br />
!<br />
![[Special:Categories|All categories]]<br />
|}<br />
</center><br />
<br />
== KolibriOS Features ==<br />
* A [http://en.wikipedia.org/wiki/Monolithic_kernel monolithic] [http://en.wikipedia.org/wiki/Preemption_(computing) preemptive] [http://en.wikipedia.org/wiki/Kernel_(computer_science) kernel] that is less than 100 kilobytes in size, complete with streams, parallel execution of system calls, a USB and [[New_stack|TCP/IP]] stack.<br />
* Speed: Thanks to being (carefully) written in Assembler, it's very fast.<br />
* Size: KolibriOS is very small - The kernel and most of the programs fit on a 1.44MB floppy disk!<br />
* Filesystem support: Read/write support for FAT16/32 (with long file names) and ext2/3/4, read-only support for NTFS, XFS and CDFS(ISO9660).<br />
* Lightweight: Kolibri boots on any computer that has a Pentium (i586) compatible processor and at least eight megabytes of RAM.<br />
* Hardware support: A lot of the popular sound, network and graphics cards are supported (see [[Hardware_Support|supported hardware list]])<br />
* Comes with a development kit (code editor with [http://en.wikipedia.org/wiki/FASM FASM] macro-assembler integrated).<br />
<br />
== Branches ==<br />
<br />
* [[EmbeddedKOS|Kolibri-A]] - an exokernel version of KolibriOS for hardware engineers and driver developers<br />
<br />
<!-- Categories --><br />
[[Category:operating systems]]<br />
<br />
<!-- Interlang --<br />
[[es:KolibriOS]]<br />
[[et:KolibriOS]]<br />
[[pl:KolibriOS]]<br />
[[ru:KolibriOS]]<br />
[[uk:KolibriOS]]<br />
--></div>Art zhhttp://wiki.kolibrios.org/index.php?title=Main_Page/ru&diff=5466Main Page/ru2019-09-21T21:39:45Z<p>Art zh: old GSoC-17 link scrapped</p>
<hr />
<div>{{DISPLAYTITLE:Wiki по KolibriOS}}<br />
{{Карточка ОС<br />
|name=KolibriOS<br />
|logo=[[File:newlogo.png|Логотип KolibriOS]]<br />
|screenshot=[[Image:KolibriOS.png|250px]]<br />
|caption=Рабочий стол KolibriOS ночная сборка<br />
|developer=[http://www.kolibrios.org/?p=ContactUs KolibriOS Project Team]<br />
|kernel_type=[https://ru.wikipedia.org/wiki/Монолитное_ядро Монолитное ядро]<br />
|license=[[GNU General Public License|GNU GPL]]<br />
|working_state=в активной разработке<br />
|website=[http://www.kolibrios.org/ www.kolibrios.org]<br />
}}<br />
'''KolibriOS''' — любительская [https://ru.wikipedia.org/wiki/Операционная_система операционная система] для [https://ru.wikipedia.org/wiki/X86 x86-совместимых компьютеров], ядро которой полностью написано на ассемблере [https://ru.wikipedia.org/wiki/Fasm Fasm]. KolibriOS распространяется на условиях [[GNU General Public License|GPL]]. Создана на основе [https://ru.wikipedia.org/wiki/MenuetOS MenuetOS], использует собственные стандарты и не является полностью POSIX- или UNIX-совместимой. Большинство разработчиков живут на территории стран СНГ.<br />
<br />
'''ВАЖНО:''' Помогите в разработке KolibriOS своим участием !<br />
==Оглавление Wiki==<br />
<center><br />
{| align="center" class="wikitable"<br />
<br />
![[For_developers/ru|Для разработчиков]]<br />
![[Applications/ru|Программы]]<br />
|-<br />
![[For_users/ru|Для пользователей]]<br />
![[History/ru|История системы]]<br />
|-<br />
![http://www.kolibrios.org/?lang=ru Официальный сайт]<br />
![[Links and publications/ru|Ссылки]]<br />
|-<br />
![http://builds.kolibrios.org/ Ночные сборки]<br />
![http://board.kolibrios.org/ Форум]<br />
|-<br />
![[Special:AllPages|Все страницы wiki]] <br />
![http://bugs.kolibrios.org/ Баг-трекер]<br />
|-<br />
![[Help:Contents|Как создать статью]]<br />
![[Special:Categories|Все категории wiki]]<br />
|-<br />
|}<br />
</center><br />
<br />
== Возможности KolibriOS ==<br />
* Вытесняющая [https://ru.wikipedia.org/wiki/многозадачность многозадачность], возможность создания потоков, параллельное исполнение системных вызовов.<br />
* Поддержка [https://ru.wikipedia.org/wiki/Файловая_система файловых систем] [https://ru.wikipedia.org/wiki/FAT FAT12, FAT16], [https://ru.wikipedia.org/wiki/FAT32 FAT32], [https://ru.wikipedia.org/wiki/NTFS NTFS], [https://ru.wikipedia.org/wiki/ext2 ext2]/[https://ru.wikipedia.org/wiki/ext3 ext3]/[https://ru.wikipedia.org/wiki/ext4 ext4] (частичная), [https://ru.wikipedia.org/wiki/ISO_9660 ISO 9660] (в том числе мультисессии).<br />
* Поддержка [https://ru.wikipedia.org/wiki/USB USB] (OHCI, UHCI, EHCI).<br />
* Поддержка [https://ru.wikipedia.org/wiki/TCP/IP TCP/IP] и некоторых сетевых карт.<br />
* Поддержка звуковых кодеков [https://ru.wikipedia.org/wiki/AC'97 AC'97] и [https://ru.wikipedia.org/wiki/High_Definition_Audio Intel HD Audio] для большинства популярных чипсетов.<br />
* Основной дистрибутив помещается на одной дискете. Для запуска достаточно 8 МБ оперативной памяти.<br />
* Загрузка с дискеты, CD, USB или жёсткого диска; с любого раздела FAT или NTFS. Возможна установка загрузчика на FAT раздел.<br />
<br />
Система рассчитана на использование ассемблера для написания приложений, но есть и программы, написанные на языках высокого уровня:<br />
* [[:Category:Программы на ассемблере|Программы на ассемблере]]<br />
* [[:Category:Программы на Си|Программы на Си]]<br />
* [[:Category:Программы на Си++|Программы на Си++]]<br />
* [[:Category:Программы на Си--|Программы на Си--]]<br />
* [[:Category:Программы на FreePascal|Программы на FreePascal]]<br />
<br />
== Активные проекты ==<br />
<br />
* [[EmbeddedKOS|Kolibri-A]] - экзоядерная версия KolibriOS для PC-инженеров<br />
* [http://kolibri-n.org/index.php KolibriN] - максимальная сборка всех программ, не вошедших в основной дистрибутив<br />
<br />
[[Category:Операционные системы]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Google_Summer_of_Code_2016&diff=5212Google Summer of Code 20162016-02-06T11:52:44Z<p>Art zh: list of targets/mentors updated</p>
<hr />
<div><!-- [[Image:GSoC2015.png|right]] --><br />
== Introduction ==<br />
KolibriOS is going to apply as a mentoring organization for [https://developers.google.com/open-source/gsoc/ Google Summer of Code 2016]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
We have previously participated as a Mentoring Organization in [http://www.google-melange.com/gsoc/homepage/google/gsoc2014 Google Summer of Code 2014]. The [[Google Summer of Code 2014|ideas page for 2014]] is available for your reference. Our organization page for GSoC 2014 and successfully completed projects for that year can be accessed [https://www.google-melange.com/gsoc/org2/google/gsoc2014/kolibrios via this link]. To our great delight, both successful students of GSoC2014 stayed with the project and continue contributing to KolibriOS voluntarily in their spare time.<br />
<br />
In 2013, we have run an [[KolibriOS Summer of Code 2013|independent Summer of Code]] using money we [http://www.kickstarter.com/projects/kolibrios/kolibrios-help-us-hold-our-own-summer-of-code-2013 collected with Kickstarter]. Two students have worked on KolibriOS, and the results of 2013 Summer of Code were: adding write support for EXT2 filesystem, and adding (read-only) support for XFS filesystem.<br />
<br />
== Student Requirements ==<br />
Prospective students are required to register [http://board.kolibrios.org/ on our developers forum], join the [http://board.kolibrios.org/chat.php developers chat] and submit a small bugfix / improvement [[Get_source_code|to our SVN]] in order for their application to be considered. Examples of such tasks can be obtained by asking on developers chat or on our IRC channel (#kolibrios @ irc.freenode.net). This requirement is only to show us that you are able to work with [[Get_source_code|our SVN]] and interact with our developers if you are selected. '''This task has to be completed before [https://developers.google.com/open-source/gsoc/timeline student application deadline] (25 March 19:00 UTC).'''<br><br><br />
In addition, students need to answer the following questions when applying:<br />
# Full Name (First + Last Name).<br />
# E-mail address.<br />
# Phone (home or mobile).<br />
# Another phone '''for emergency cases''' (if we cannot contact you) - parents, boy/girlfriend, husband/wife etc.<br />
# Nickname you plan to use on our forums, SVN repository or IRC chat.<br />
# Age.<br />
# Country + city of residence.<br />
# Human languages you speak (state all languages and knowledge level - basic/intermediate/expert/mother tongue).<br />
# Name of college or university you are accepted into or enrolled in + link to their website.<br />
# Name of program (or faculty, or department) in that college/university you are accepted into or enrolled in.<br />
# Your current timezone in UTC/GMT terms (for example, Paris is UTC/GMT +1 hours right now).<br />
# Have you been involved with any open-source project in the past? If yes, which one, and what have you done for that project?<br />
# Code samples - please provide links to code that you have written. It can be your high school project, contribution to open-source organization, your college/university task or anything like that.<br />
# The task you are willing to work on from our list of Summer of Code 2016 ideas (or suggest your own idea, if you don't like any of the proposed ideas). Please provide an approximate work plan for your task split to 1-week intervals, as well as expected outcome of your work. '''This point should be detailed as much as possible, as your application would be evaluated mainly based on what you write here.''' You are welcome (and even encouraged!) to collaborate with potential mentors on this paragraph.<br />
# What other time commitments, such as school work, university studies, another job, planned vacation, etc., will you have between May 23 and August 23 (coding period)? Please be as specific as possible. ''Bear in mind that GSoC is like a full-time job, so if you consider taking a summer semester at the university (with more than 1-2 courses), or intend to perform an internship or work elsewhere during the summer in addition to GSoC, you will likely be '''NOT''' accepted.''<br />
<br />
== Organization ==<br />
<br />
You can find the organizers on the IRC channel (#kolibrios @ irc.freenode.net) or at our forum: http://board.kolibrios.org/<br />
<br />
{| class="wikitable"<br />
|'''Name'''<br />
|'''Nickname'''<br />
|'''Role'''<br />
|-<br />
| vacant<br />
| vacant<br />
|Organization Administrator<br />
|-<br />
|Jeffrey Amelynck<br />
|[[User:Hidnplayr|hidnplayr]]<br />
|Mentor, Backup Administrator<br />
|-<br />
|Kiril Lipatov<br />
|[[User:Punk Joker|Leency]]<br />
|Mentor<br />
|-<br />
|Ashish Gupta<br />
|[[User:ashmew2|ashmew2]]<br />
|Mentor<br />
|-<br />
|}<br />
We have discussed "Google Summer of Code 2016" application with all active members of the KolibriOS Project Team, and selected only those 3 (three) people who have both the knowledge, the dedication, and the time to help their students during the entire summer. Each one of them was assigned to mentor projects in his area of specialization only. In a rare event when a Mentor from the above list cannot continue mentoring his student(s) due to personal circumstances, we will try to find a replacement Mentor, or ask the remaining Mentors to cover for the missing one. Additionally, there is always a number of knowledgeable members of our team hanging around our [http://board.kolibrios.org/chat.php forum chat], and they will gladly answer any student questions that may arise, even if they haven't volunteered as Mentors themselves.<br />
<br />
Most Mentors selected for this year are the same that were originally proposed for last year, and they have already proved to be responsible, helpful and knowledgeable during GSoC2014.<br />
<br />
== Ideas for Google Summer of Code 2016 ==<br />
The below list contains ideas suggested by KolibriOS team members. '''It is neither complete nor final.'''<br><br />
Students are welcome ('''and even encouraged''') to suggest their own ideas for GSoC, provided they can find a mentor amongst KolibriOS developers to guide them.<br />
<br />
=== Sortable list of ideas for easy navigation ===<br />
{| class="wikitable sortable" border="1"<br />
|-<br />
! Idea Name<br />
! Area<br />
! Required Skill Level<br />
! Importance for KolibriOS<br />
! Programming Language<br />
! Mentor<br />
|-<br />
| [[#XDXF_dictionary|XDXF dictionary]]<br />
| Application<br />
| Basic<br />
| Low<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#CPUID_tool|CPUID tool]]<br />
| Application<br />
| Beginner<br />
| Low<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#FTP_client|FTP client]]<br />
| Application<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Torrent_client|Torrent client]]<br />
| Application<br />
| Advanced<br />
| High<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#XMPP.2FJabber_client|XMPP/Jabber client]]<br />
| Application<br />
| Intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Music_player|Music player]]<br />
| Application<br />
| Advanced<br />
| Medium<br />
| Assembler(FASM)/C/C++<br />
| hidnplayr<br />
|-<br />
| [[#Web_browser:_WebView|Web browser: WebView]]<br />
| Application<br />
| intermediate<br />
| Standard<br />
| [http://www.dev0.de/cmm/indexe.htm Sphinx C--]<br />
| Leency<br />
|-<br />
| [[#Ethernet_driver.28s.29|Ethernet driver(s)]]<br />
| Driver<br />
| Advanced<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#SD_Host_Controller|SD Host Controller driver]]<br />
| Driver<br />
| Advanced<br />
| Low<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#USB_devices|USB device drivers]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| hidnplayr<br />
|-<br />
| [[#Filesystem_support|Filesystem support]]<br />
| Driver<br />
| Expert<br />
| High<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#Widget_toolkit|Widget toolkit]]<br />
| System wide task<br />
| intermediate<br />
| Standard<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#Unit_testing_framework|Unit testing framework]]<br />
| System wide task<br />
| intermediate<br />
| High<br />
| Any<br />
| ?<br />
|-<br />
| [[#QR-code_in_boot_log|QR-code in boot log]]<br />
| Kernel/Library<br />
| Basic<br />
| Medium<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#Wi-Fi|Wi-Fi]]<br />
| Driver<br />
| intermediate<br />
| Medium<br />
| Assembler(FASM)<br />
| ?<br />
|-<br />
| [[#C layer for KolibriOS|C layer for KolibriOS]]<br />
| Library<br />
| intermediate<br />
| Medium<br />
| C<br />
| Ashmew2<br />
|}<br />
Explanation of required skill level:<br />
* Beginner: No knowledge at all of the topic,<br />
* Basic: A very basic knowledge of the topic but no professional usage,<br />
* Intermediate: A basic knowledge of the topic but no regular professional usage,<br />
* Advanced: A good knowledge of the topic and a regular professional usage,<br />
* Expert: a perfect knowledge of the topic and a daily professional usage.<br />
<br />
Explanation of importance for the project:<br />
* Low: For sure it doesn't hurt to implement, but if nobody does it, no one will even notice.<br />
* Medium: Nice-to-have feature. Will improve everyday life of users and developers.<br />
* High: This feature is needed for the project to start being adopted by masses.<br />
* Critical: This functionality is vital for the project to become useful.<br />
<br />
=== Applications ===<br />
These are userspace tasks. They often require only basic knowledge of algorithms and data structures.<br><br />
No specific experience is required but welcome.<br />
<br />
==== XDXF dictionary ====<br />
'''Summary:''' Write dictionary application with support of XDXF (XML Dictionary eXchange Format)<br />
<br />
'''Details:'''<br />
* Primary goal: Write library and corresponding dictionary application<br />
* Additional goal: Support of other dictioinary formats<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist<br />
* Links: [http://tibleiz.net/asm-xml/ fasm xml library], [https://en.wikipedia.org/wiki/XDXF XDXF format]<br />
<br />
<br />
==== CPUID tool ====<br />
'''Summary:''' Update existing CPUID application to be aware of new CPUs and their features<br />
<br />
'''Details:'''<br />
* Primary goal: Write code to detect and report new CPUs and features + size detection for caches<br />
* Additional goal: Refactor code as to use system libraries (libimg, box_lib, etc.)<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: Standard<br />
* Mentor: dunkaist / Wildwest<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fprograms%2Fsystem%2Fcpuid%2Ftrunk%2F&#aec5d374b78ae8f08110b3327c3ba5f56 CPUID program], [http://bochs.sourceforge.net/techspec/24161821.pdf Intel cpuid], [http://support.amd.com/TechDocs/25481.pdf AMD cpuid]<br />
<br />
<br />
==== FTP client ====<br />
'''Summary:''' Create a GUI based FTP client or add FTP support to one of the existing file managers<br />
<br />
'''Details:'''<br />
* Primary goal: FTP access (download/upload/etc.)<br />
* Additional goal: Create an FTP client library<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [https://www.ietf.org/rfc/rfc959.txt File Transfer Protocol (RFC959)], [http://board.kolibrios.org/viewtopic.php?f=40&t=2360 CLI FTP client (demo)]<br />
<br />
==== Torrent client ====<br />
'''Summary:''' Write a (bit-)torrent client for KolibriOS, or port an existing one<br />
<br />
'''Details:'''<br />
* Primary goal: Implement a torrent client similar to [http://www.utorrent.com/ µTorrent Free edition]<br />
* Alternative goal (less preferred, but still possible): Port an existing torrent client to KolibriOS<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://www.bittorrent.org Information about the protocol]<br />
<br />
==== XMPP/Jabber client ====<br />
'''Summary:''' Write a XMPP/Jabber library and client for KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Write basic xmpp library/client<br />
* Additional goal: Implement some xmpp extentions<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist/hidnplayr<br />
* Links: [http://xmpp.org/xmpp-protocols/rfcs/ XMPP spec], [http://xmpp.org/xmpp-protocols/xmpp-extensions/ XMPP extentions], [http://board.kolibrios.org/viewtopic.php?f=32&t=3111&p=62432#p62433 Unfinished XMPP client for KolibriOS]<br />
<br />
==== Music player ====<br />
'''Summary:''' Improve the current music player in Kolibri<br />
<br />
'''Details:'''<br />
* Primary goal: Rewrite the current music player (ac97snd), in FASM, and improve its functionality<br />
: * Support for file formats wav, mp3 and xm (using available external libraries)<br />
: * Support for playlists (m3u)<br />
: * A time display<br />
* Additional goal:<br />
: * Use of system wide hotkeys to control player<br />
: * Support for metadata (ID3, ...)<br />
: * More codecs (flac, vorbis, ...)<br />
: * Audio indication (oscillograph, bar graph, ...)<br />
: * Show cover art from files or album folder<br />
: * Fade in/out and/or crossover<br />
: * Streaming radio (at least mp3 over http stream)<br />
: * Skins<br />
: * Media library<br />
* Language: Assembler/FASM (C/C++ to port codec)<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: hidnplayr / dunkaist<br />
* Links: [http://board.kolibrios.org/viewtopic.php?f=38&t=1596 AC97SND (MP3 player in C)], [http://board.kolibrios.org/viewtopic.php?f=28&t=317 Sound drivers and architecture], [http://board.kolibrios.org/viewtopic.php?f=38&t=3003 Flac decoder],[http://board.kolibrios.org/viewtopic.php?f=38&t=2220 Minimp3 (minimalistic mp3 decoding library)], [http://board.kolibrios.org/viewtopic.php?f=38&t=161 SuperMP3 (IDv3 tag demo)]<br />
<br />
==== Web browser: WebView ====<br />
'''Summary:''' Improve existing text-only web browser WebView - add more functionality and compatibility<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: [http://www.dev0.de/cmm/indexe.htm Sphinx C--]. May require writing a few lines in FASM though<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentors: Leency<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
* [http://board.kolibrios.org/viewtopic.php?f=40&t=1075 Work done so far on WebView (mostly in Russian)]. If you don't know Russian, you can read [http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fboard.kolibrios.org%2Fviewtopic.php%3Ff%3D40%26t%3D1075 English translation using Google-Translate]<br />
<br />
=== Drivers ===<br />
Writing drivers is about new hardware and filesystems.<br><br />
Knowledge of specifications and previous experience are ''not'' required but surely desirable.<br />
<br />
==== Ethernet driver(s) ====<br />
'''Summary:''' Write an Ethernet driver<br />
<br />
'''Details:'''<br />
* Primary goal: Support for popular Broadcom, Atheros or Marvell Yukon ethernet cards<br />
* Additional goal: A second driver for another card family, PPPoE support in kernel, ...<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: Medium<br />
* Mentor: hidnplayr<br />
* Links: [https://www.broadcom.com/collateral/pg/57XX-PG105-R.pdf BCM57xx programmers guide], [[Writing network drivers for KolibriOS]], [https://github.com/UDOOboard/U-Boot_Unico/blob/master/drivers/net/bcm570x.c BCM570x driver for u-boot (in C)], [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fdrivers%2Funfinished%2Fbcm57xx.asm Stub for BCM57xx driver]<br />
<br />
==== SD Host Controller ====<br />
'''Summary:''' Add support for SD Host Controller<br />
<br />
'''Details:'''<br />
* Primary goal: Write driver for particular controller<br />
* Additional goal: Test and update driver to work for all controllers<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [https://www.sdcard.org/downloads/pls/simplified_specs/index.html SD specifications]<br />
<br />
<br />
==== USB devices ====<br />
'''Summary:''' Add USB drivers for the new USB stack (webcams, gamepads, joysticks, tablets, etc.)<br />
<br />
'''Details:'''<br />
* Primary goal: Write USB driver for currently unsupported device (you should have one)<br />
* Additional goal: Adopt code to work with all devices of the same class<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Importance: High<br />
* Mentor: hidnplayr<br />
* Links: [http://en.wikipedia.org/wiki/USB#Device_classes USB device classes]<br />
<br />
==== Filesystem support ====<br />
'''Summary:''' Improve filesystem support in KolibriOS<br />
<br />
'''Details:'''<br />
* Primary goal: Update/fix read-write support for EXT2/3/4 filesystems (partially done)<br />
* Alternative goal: Add write support for the NTFS filesystem (read-only support already exists)<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Ftrunk%2Ffs%2F&#a0aa5cede7308db82d4bae78266ed8462 Filesystems in KolibriOS]<br />
<br />
==== Wi-Fi ====<br />
'''Summary:''' Add a Wi-Fi driver<br />
<br />
'''Details:'''<br />
* Description: <br />
* Language: Assembler/FASM<br />
* Skill level: intermediate<br />
* Importance: Medium<br />
* Mentor: ?<br />
* Links: [[https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers Comparison of open source wifi drivers]]<br />
<br />
=== System wide tasks ===<br />
These tasks comprise both user space and kernel space work. Some developers consider them as of most importance for KolibriOS.<br><br />
Architecture and algorithm design skills are highly desirable.<br />
<br />
<br />
==== Widget toolkit ====<br />
'''Summary:''' Extend Box_lib (a set of separate widgets) to create a full-featured widget toolkit<br />
<br />
'''Details:'''<br />
* Primary goal: Design architecture and implement focus handling, callbacks and other core ideas<br />
* Additional goal: Integrate box_lib widgets to this framework<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Importance: Vital<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/Widget_toolkit basic idea], [http://en.wikipedia.org/wiki/List_of_widget_toolkits list of toolkits]<br />
<br />
<br />
==== Unit testing framework ====<br />
'''Summary:''' Design and implement an unit testing framework, write tests for kernel functions<br />
<br />
'''Details:'''<br />
* Primary goal: Design and implement a framework, write tests for kernel functions<br />
* Additional goal: Write tests for system libraries (libio, libini)<br />
* Language: Assembler/FASM (preferrable), any other working in KolibriOS<br />
* Skill level: beginner/intermediate<br />
* Importance: High<br />
* Mentor: dunkaist<br />
* Links: [http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks list of unit testing frameworks]<br />
<br />
==== QR-code in boot log ====<br />
'''Summary:''' Add a [http://en.wikipedia.org/wiki/QR_code QR-code] (containing the debug log) at the end of boot process<br />
<br />
[[File:QR-code.png]]<br />
<br />
'''Details:'''<br />
* Description: Sometimes KolibriOS cannot boot on a certain hardware configuration (gets stuck during or after boot process). In such cases, we request the user having this problem to enable debug log at boot time, take a photo of the screen and show it to us (in the forum). However, sometimes taking a good quality photo can be quite challenging (bad camera, shaking hands etc.) and the attached photo is so blurry to the point the debug log cannot be even read. The idea suggested hereby is to simultaneously encode the debug log which is outputted on the screen, to the form of QR-code, and [http://wiki.kolibrios.org/wiki/File:QR-code.png show the resulting QR-code on empty space on the screen]. In such way, any user possessing a smartphone with a camera and QR-code scanner, could scan the QR-code and submit the encoded text directly on our forums (without having a need to take a photo), and our developers, in turn, would get the debug log text immediately and won't have to unscramble a blurry photo.<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate<br />
* Mentor: dunkaist<br />
<br />
==== C layer for KolibriOS ====<br />
'''Summary:''' Building a C layer for KolibriOS, so that we can get more developers and port more code to KolibriOS more easily.<br />
<br />
'''Details:'''<br />
* Description:<br />
As a lot of software out there is available in C and useful for KolibriOS, building an ecosystem around C and FASM is required. Some work towards a cross compiler has already been done. Since KolibriOS is neither Linux, nor Windows..it is challenging to port software. In order to automate this, we need to port existing libraries and figure out a way to automate/streamline this process. The best part about this is that you get to mix C and FASM in unprecedented ways and learn along the way.<br />
<br />
The end result should be as easy as writing a Makefile and calling the cross compiler which creates a binary for Kolibri OS.<br />
<br />
The eventual aim is to have libraries in C available for KolibriOS which let you use the same ASM procedures in C code.<br />
<br />
Example:<br />
#include<kolibri.h><br />
int main()<br />
{ <br />
kolibri_window("Hi!");<br />
return 0;<br />
}<br />
<br />
Some work on this has already been done. Get in touch to know more!<br />
<br />
* Language(s): <br />
C - Required <br />
FASM <Not a strict requirement, but is desirable><br />
GNU Autotools (Easy to pick up, safe to assume optional)<br />
* Bonus points for the ability in designing a clean approach to achieve this.<br />
<br />
* Skill level: intermediate / unknown<br />
* Mentor: ashmew2<br />
<br />
==== Virtualbox support for KolibriOS ====<br />
'''Summary:''' Building Virtualbox support for KolibriOS so that it is easier to use in a virtual machine.<br />
<br />
'''Details:'''<br />
* Description:<br />
Create a set of tools which let KolibriOS seamlessly interface with a host running Kolibri via VirtualBox. Develop parts required, especially shared folders, which resemble Guest Additions.<br />
(For a Linux based Host running KolibriOS as Guest.)<br />
<br />
* Language(s): <br />
<br />
C - Virtualbox Source code.<br />
FASM - To understand the source code of KolibriOS better and prepare interfaces with Guest additions.<br />
<br />
<br />
* Ability to understand a larger source code base and contribute to it are very desirable!<br />
<br />
* Skill level: Advanced / unknown<br />
* Mentor: ashmew2<br />
<br />
<br />
<!--<br />
=== Open Ideas (without appointed mentor) ===<br />
<br />
==== One core for graphics ====<br />
'''Summary:''' On multi-core systems, dedicate one core for graphics rendering ONLY<br />
<br />
'''Details:'''<br />
* Goal: Move graphics subsystem to a single, dedicated core if multicore machine detected<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Serge(?)<br />
<br />
==== Partition editor ====<br />
'''Summary:''' Add a partition/HDD editor utility<br />
<br />
'''Details:'''<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: Mario(?)<br />
<br />
==== Rewrite "Table" in Assembler ====<br />
'''Summary:''' Rewrite a great Kolibri spreadsheet application [[Table]] from C++ to FASM<br />
<br />
'''Details:'''<br />
* Goal: Port Table (C++) to Assembler/FASM<br />
* Language: Assembler/FASM<br />
* Skill level: beginner/intermediate/advanced<br />
* Mentor: ???<br />
<br />
==== Kernel vulnerabilities ====<br />
'''Summary:''' Find and fix as many kernel vulnerabilities as you can<br />
<br />
'''Details:'''<br />
* Goal: Check the list of kernel API functions versus their actual implementation in KolibriOS kernel (for example, check that the function doesn't destroy register values if it declares in description that it doesn't). If you find a vulnerability, try to fix it so that it works according to API. If you cannot fix it yourself, document the vulnerability and describe the problem.<br />
* Language: Assembler/FASM<br />
* Skill level: Intermediate/Expert<br />
* Mentor: Serge '''(Is not always available to answer questions, so select this task only if you can work fairly independently.)'''<br />
<br />
==== Web browser in FASM ====<br />
'''Summary:''' Write a proper HTML web browser for KolibriOS<br />
<br />
'''Links:'''<br />
* [http://www.w3.org/TR/REC-html40/ HTML 4.01 Specification]<br />
<br />
'''Details:'''<br />
* Primary goal: Have mostly complete HTML4 support on a good enough level to read non-complex (mobile?) websites<br />
* Secondary goal: Add certain elements of CSS, speed optimizations<br />
* Language: Assembler/FASM<br />
* Skill level: Expert<br />
* Mentor: SoUrcerer<br />
<br />
<br />
==== Printing/scanning API ====<br />
'''Summary:''' Add a printing and scanning API and drivers.<br />
<br />
'''Details:'''<br />
* Primary goal: Design and code infrastructure for printing and scanning devices.<br />
* Language: Assembler/FASM<br />
* Skill level: intermediate/advanced<br />
* Mentor: SoUrcerer<br />
--><br />
<br />
[[Category:Misc]]<br />
<br />
<br />
== Rough Guide for Prospective Students ==<br />
<br />
* As the kernel is written in FASM, ability to write and understand i386-assembly code is very useful.<br />
* C is also a plus as some applications/libraries and components are written in C. Also, C is useful to interface with assembly at times.<br />
* Familiarity with the GNu landscape like Autotools, GCC etc are also a plus to have (especially for porting software)<br />
* The desire to take challenging problems and solve them is also required as several parts of the code base require thought for design and implementation. (The mentors can help you with that :) )<br />
* Hanging out on Freenode's #kolibriOS , and our Chat (accessible through kolibrios.org -> Forum -> Chat) are where developers mostly hang out.<br />
* Languages used for communication are Russian and English (although most developers are bilingual, and you can always ask someone for help)<br />
* Get in touch with other developers via IRC / Chat / Forums and enjoy your stay!</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Main_Page/ru&diff=5146Main Page/ru2016-01-17T10:45:56Z<p>Art zh: ruissian Wiki pages references restored</p>
<hr />
<div>{{DISPLAYTITLE:Wiki по KolibriOS}}<br />
{{Карточка ОС<br />
|name=KolibriOS<br />
|logo=[[File:newlogo.png|Логотип KolibriOS]]<br />
|screenshot=[[Image:KolibriOS.png|250px]]<br />
|caption=Рабочий стол KolibriOS ночная сборка<br />
|developer=[http://www.kolibrios.org/?p=ContactUs KolibriOS Project Team]<br />
|family=<br />
|source_model=[https://ru.wikipedia.org/wiki/%D0%9E%D1%82%D0%BA%D1%80%D1%8B%D1%82%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5 Открытый]]<br />
|latest_release_version=0.7.7.0 / [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS SVN]<br />
|latest_release_date=декабрь 2009 года<br />
|kernel_type=[https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%BD%D0%BE%D0%BB%D0%B8%D1%82%D0%BD%D0%BE%D0%B5_%D1%8F%D0%B4%D1%80%D0%BE Монолитное ядро]<br />
|license=[[GNU General Public License|GNU GPL]]<br />
|working_state=Актуальное<br />
|website=[http://www.kolibrios.org/ www.kolibrios.org]<br />
}}<br />
'''KolibriOS''' — любительская [https://ru.wikipedia.org/wiki/%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0 операционная система]] для [https://ru.wikipedia.org/wiki/X86 x86-совместимых компьютеров]], ядро которой полностью написано на языке [https://ru.wikipedia.org/wiki/Fasm ассемблер]. KolibriOS распространяется на условиях [[GNU General Public License|GPL]]. Создана на основе [[wikipediaru:MenuetOS| MenuetOS]], использует собственные стандарты и не является полностью POSIX- или UNIX-совместимой. На данный момент преимущественное большинство разработчиков живут на территории стран СНГ.<br />
==Оглавление Wiki==<br />
<center><br />
{| align="center" class="wikitable"<br />
<br />
![[For_developers/ru|Для разработчиков]]<br />
![[Applications/ru|Программы]]<br />
|-<br />
![[For_users/ru|Для пользователей]]<br />
![[History/ru|История системы]]<br />
|-<br />
![http://www.kolibrios.org/?lang=ru Официальный сайт]<br />
![[Links and publications/ru|Ссылки]]<br />
|-<br />
![http://builds.kolibrios.org/ Ночные сборки]<br />
![http://board.kolibrios.org/ Форум]<br />
|-<br />
![[Special:AllPages|Все страницы wiki]] <br />
![http://bugs.kolibrios.org/ Баг-трекер]<br />
|-<br />
![[Help:Contents|Как создать статью]]<br />
![[Special:Categories|Все категории wiki]]<br />
|-<br />
|}<br />
</center><br />
<br />
== Возможности KolibriOS ==<br />
* Множество вариантов загрузки, в том числе с [[wikipediaru:NTFS| NTFS]] раздела. Так же возможна загрузка непосредственно из [[wikipediaru:Windows| Windows]] (при этом Windows, конечно, завершается), не требующая установки системы. <br />
* [[wikipediaru:графический_интерфейс_пользователя| Графический интерфейс]] на основе [[wikipediaru:VESA| VESA]]. Возможность увеличения частоты монитора за счет уменьшения разрешения. <br />
* Среда разработки: редактор, макро-ассемблер ([https://ru.wikipedia.org/wiki/Fasm ассемблер]) для сборки [https://ru.wikipedia.org/wiki/%D0%AF%D0%B4%D1%80%D0%BE_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%BE%D0%B9_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B ядра]] и приложений. <br />
<!--* Поддержка [https://ru.wikipedia.org/wiki/TCP/IP TCP/IP]-стека для некоторых сетевых карт. --><br />
* Основной дистрибутив помещается на одной дискете.<br />
* Для запуска достаточно 8 МБ оперативной памяти. Для запуска "ночной" сборки достаточно 6 МБ.<br />
* Вытесняющая [[wikipediaru:многозадачность| многозадачность]], возможность создания потоков, параллельное исполнение системных вызовов. <br />
<!--* Страничная адресация. --><br />
* Поддержка [https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%B0%D1%8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0 файловых систем]] [https://ru.wikipedia.org/wiki/FAT16 FAT12, FAT16], [https://ru.wikipedia.org/wiki/FAT32 FAT32], https://ru.wikipedia.org/wiki/NTFS NTFS]] (частичная, только чтение), [https://ru.wikipedia.org/wiki/ext2 ext2]]/[https://ru.wikipedia.org/wiki/ext3 ext3]]/[https://ru.wikipedia.org/wiki/ext4 ext4]] (частичная, только чтение), [https://ru.wikipedia.org/wiki/ISO_966 ISO 9660]] (в том числе мультисессию). <br />
* Поддержка звуковых кодеков [[wikipediaru:AC'97|AC'97]] и [[wikipediaru:High Definition Audio|Intel HD Audio]] для большинства популярных чипсетов.<br />
* Поддержка [[USB]] (OHCI, UHCI, EHCI).<br />
<!--* Уже портированы такие программы как [http://diamondz.land.ru/dosbox.7z DosBox], [http://www.kolibri.hut1.ru/download.htm Quake], [http://www.kolibri.hut1.ru/download.htm Doom] и другие, что означает высокую степень развития системы.<br />
--><br />
<br />
Система рассчитана на использование ассемблера для написания приложений, но есть и программы, написанные на языках высокого уровня.<br />
* [[:Category:Программы на ассемблере|Программы на ассемблере]]<br />
* [[:Category:Программы на Си|Программы на Си]]<br />
* [[:Category:Программы на Си++|Программы на Си++]]<br />
* [[:Category:Программы на Си--|Программы на Си--]]<br />
* [[:Category:Программы на FreePascal|Программы на FreePascal]]<br />
<br />
== Активные проекты ==<br />
<br />
* [[EmbeddedKOS|Kolibri-A]] - встраиваемая версия KolibriOS<br />
* [http://kolibri-n.org/index.php KolibriN] - максимальная сборка всех программ, не вошедших в основной дистрибутив<br />
<br />
<!--<br />
{{Портал|Свободное программное обеспечение|Floss draft.png}}<br />
[[uk:KolibriOS]]<br />
[[pl:KolibriOS]]<br />
[[en:KolibriOS]]<br />
[[es:KolibriOS]]<br />
[[et:KolibriOS]]<br />
--><br />
<br />
[[Category:Операционные системы]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=User:Art_zh&diff=5137User:Art zh2016-01-15T20:16:00Z<p>Art zh: </p>
<hr />
<div>{| align="center" cellspacing="1" class="user_info"<br />
!Name:<br />
|Artem Jerdev<br />
|Жердев Артём Александрович <br />
|-<br />
!Where from:<br />
|Exeter, UK<br />
|born in USSR<br />
|-<br />
!Company:<br />
|[http://www.vxmt.com Vivax Metrotech Ltd.]<br />
|RF electronics, FPGA, Embedded x86<br />
|-<br />
!Projects:<br />
|[[EmbeddedKOS/en | Kolibri-A]], [[ROM_boot|ROM-boot]], [[Documentation|docs]]<br />
|[[EmbeddedKOS/ru | Колибри-А]], [[ROM_boot|бездисковая загрузка]], [[Documentation/ru|справочная система]]<br />
|-<br />
!Contacts:<br />
|[mailto:kolibrios@blueyonder.co.uk]<br />
|ftp://kolibrios.org/users/art_zh<br />
|}</div>Art zhhttp://wiki.kolibrios.org/index.php?title=User:Art_zh&diff=5125User:Art zh2016-01-15T16:40:10Z<p>Art zh: </p>
<hr />
<div>{| align="center" cellspacing="1" class="user_info"<br />
!Name:<br />
|Artem Jerdev<br />
|Жердев Артём Александрович <br />
|-<br />
!Where from:<br />
|Exeter, UK<br />
|born in USSR<br />
|-<br />
!Company:<br />
|[http://www.vxmt.com Vivax Metrotech Ltd.]<br />
|RF electronics, FPGA, Embedded x86<br />
|-<br />
!Projects:<br />
|[[EmbeddedKOS/en | Kolibri-A]], [[ROM_boot|ROM-boot]], [[Documentation|docs]]<br />
|[[EmbeddedKOS/ru | Колибри-А]], [[ROM_boot|бездисковая загрузка]], [[Documentation/ru|справочная система]]<br />
|-<br />
!Contacts:<br />
|[mailto:kolibri@blueyonder.co.uk]<br />
|ftp://kolibrios.org/users/art_zh<br />
|}</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Gmon/ru&diff=4077Gmon/ru2012-11-05T21:06:51Z<p>Art zh: GMON</p>
<hr />
<div>[[Image:Ghost_monitor.jpg|thumb|right]]<br />
<code>Ghost Monitor (GMon)</code> - утилита стресс-тестирования системы.<br />
<br><br />
Выводит полезную информацию о температуре, напряжении питания, загрузке процессора, тактовой частоте и производителе системного HWM-чипа. <br />
<br><br />
Показания датчиков температуры выводятся также и в графической форме в масштабе 1 градус/пиксель.<br />
<br><br />
Режим стресс-тестирования позволяет наблюдать за динамикой температуры при 100%-й загрузке процессора.<br />
<br><br />
Опрос датчиков температуры/напряжения происходит посредством встраиваемых на этапе компиляции HWM-модулей:<br />
* hwm_it87.inc (чипы it8705, it8712, sis950)<br />
* hwm_uguru.inc (W83L950D)<br />
* hwm_wb.inc (прочие чипы Winbond)<br />
* hwm_hudson.inc (HWM-интерфейс южного моста AMD Hudson, ''в разработке'')<br />
<br><br />
Версия GMON для [http://websvn.kolibrios.org/listing.php?repname=Kolibri+OS&path=%2Fkernel%2Fbranches%2FKolibri-A%2Futilities%2Famon%2F&#a44feeeb62135ef141bbe6def8ed89dea Колибри-А] позволяет также мониторить реальную температуру на чипе процессора и текущую тактовую частоту, а также переключать Р-режимы энергопотребления AMD Fusion. <br />
<br />
== Авторы ==<br />
Mihailov Ilia (ghost.nsk@mail.ru)<br />
<br><br />
art_zh <br />
<br />
<br />
<br />
{{Системные программы}}<br />
[[Category:Системные программы]]<br />
[[Category:Программы на ассемблере]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=SysFn60/ru&diff=4023SysFn60/ru2012-08-31T10:51:33Z<p>Art zh: </p>
<hr />
<div>'''Функция 60 - Inter Process Communication (IPC).'''<br />
<br />
IPC применяется для посылок сообщений от одного процесса/потока<br />
другому. При этом следует предварительно договориться о том, как<br />
интерпретировать конкретное сообщение.<br />
<br />
=== Подфункция 1 - установить область для получения IPC ===<br />
Вызывается процессом-приёмником.<br />
<br />
''Параметры:''<br />
<br />
* eax = 60 - номер функции<br />
* ebx = 1 - номер подфункции<br />
* ecx = указатель на буфер<br />
* edx = размер буфера<br />
<br />
''Возвращаемое значение:''<br />
<br />
* eax = 0 - всегда успешно<br />
<br />
''Формат IPC-буфера:''<br />
<br />
* +0: dword: если здесь не 0, то буфер считается заблокированным; блокируйте/разблокируйте буфер, когда вы с ним активно работаете и вам надо, чтобы извне не изменялись данные буфера (не поступали новые сообщения)<br />
* +4: dword: занято места в буфере (в байтах)<br />
* +8: первое сообщение<br />
* +8+n: второе сообщение<br />
* ...<br />
<br />
''Формат сообщения:''<br />
<br />
* +0: dword: PID процесса/потока, пославшего сообщение<br />
* +4: dword: длина сообщения (не считая этот заголовок)<br />
* +8: n*byte: данные сообщения<br />
<br />
=== Подфункция 2 - послать сообщение IPC. ===<br />
<br />
Вызывается процессом-инициатором.<br />
<br />
''Параметры:''<br />
<br />
* eax = 60 - номер функции<br />
* ebx = 2 - номер подфункции<br />
* ecx = PID приёмника<br />
* edx = указатель на данные сообщения<br />
* esi = длина сообщения (в байтах)<br />
<br />
''Возвращаемое значение:''<br />
<br />
* eax = 0 - успешно<br />
* eax = 1 - приёмник не определил буфер для IPC-сообщений (может быть, ещё не успел, а может быть, это не тот поток, который нужен)<br />
* eax = 2 - приёмник заблокировал IPC-буфер; попробуйте немного подождать<br />
* eax = 3 - переполнение IPC-буфера приёмника<br />
* eax = 4 - процесса/потока с таким PID не существует<br />
''Замечания:''<br />
<br />
* Система сразу после записи IPC-сообщения в буфер посылает потоку-приёмнику событие с кодом 7 (см. [[Events/ru | коды событий]]).<br />
<br />
{{System_functions}}<br />
[[Category: SysCalls]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=EmbeddedKOS&diff=3981EmbeddedKOS2012-06-11T23:11:41Z<p>Art zh: /* Embedded-KOS */</p>
<hr />
<div>== Embedded-KOS ==<br />
<br />
As it was shown (see for example [http://board.kolibrios.org/viewtopic.php?t=897 KolibriOS for Manufacturing control]), KolibriOS can be successfully used in wide range of data acquisition and process control systems.<br /><br />
<br />
A compact open-source kernel, a simple and convenient minimalistic graphics subsystem, fairly developed user interface, very capable low-level system services, most popular network protocols and filesystems support - all this set of features let us possess KolibriOS as a perspective embedded OS.<br /><br />
<br />
In the other hand, some serious problems still must be solved to make it a true embedded-OS: [http://board.kolibrios.org/viewtopic.php?t=1211]. <br />
<br />
As an attempt to try different solutions of those problems, "Kolibri-A" branch-project has been started in July 2010. <br />
<br />
'''NB:''' the '''A''' letter means its code will be tied to AMD/HT architecture; particularly to a well-documented AMD chipsets ''NB780/SB700'' and ''Fusion/Hudson''. Other platforms might not be supported in the nearest future...<br /><br />
<br />
Note also that some specific features of ''Kolibri-A'' are 100% experimental:<br />
- you're warned you can use or test this branch on your own risk, and<br />
- you should realise that some of these features will never be merged to the main ''KolibriOS'' trunk.<br />
<br />
'''Specific features of Kolibri-A'''<br /><br />
* extended PCI service;<br />
* direct read/write transactions to/from ''several'' user-accessible memory-mapped IO regions; <br />
* a static system buffer (8Мb) available for non-standard device testing and user-world DMA-operations;<br />
* an RT-optimized memory manager;<br />
* burst-DMA mode (PCI) и "long" PCI-express packets support (also in the userspace!);<br />
* native support of Extended PCI-express configspace;<br />
* direct (APIC-unfriendly) power control;<br />
* 32bit-optimized graphics,<br />
* experimental ''non-scalable'' vector fonts,<br />
* optional ROM-bootloader,<br />
* fast system calls. <br /></div>Art zhhttp://wiki.kolibrios.org/index.php?title=Ru/api/kernel&diff=3362Ru/api/kernel2011-09-04T18:08:46Z<p>Art zh: /* Перечень функций */</p>
<hr />
<div>''' СИСТЕМНЫЕ ФУНКЦИИ KolibriOS 0.7.7.0 '''<br />
<br />
Номер функции помещается в регистр eax.<br />
Вызов системной функции осуществляется командой "int 0x40".<br />
Все регистры, кроме явно указанных в возвращаемом значении, включая регистр флагов eflags, сохраняются.<br />
<br />
== Перечень функций ==<br />
<br />
[[SysFn00/ru | Функция 0]] - определить и нарисовать окно.<br />
<br />
[[SysFn01/ru | Функция 1]] - поставить точку в окне.<br />
<br />
[[SysFn02/ru | Функция 2]] - получить код нажатой клавиши.<br />
<br />
[[SysFn03/ru | Функция 3]] - получить системное время.<br />
<br />
[[SysFn04/ru | Функция 4]] - вывести строку текста в окно.<br />
<br />
[[SysFn05/ru | Функция 5]] - пауза.<br />
<br />
[[SysFn06/ru | Функция 6]] - прочитать файл с рамдиска.<br />
<br />
[[SysFn07/ru | Функция 7]] - вывести изображение в окно.<br />
<br />
[[SysFn08/ru | Функция 8]] - определить/удалить кнопку.<br />
<br />
[[SysFn09/ru | Функция 9]] - информация о потоке выполнения.<br />
<br />
[[SysFn10/ru | Функция 10]] - ожидать события.<br />
<br />
[[SysFn11/ru|Функция 11]] - проверить, есть ли событие, без ожидания.<br />
<br />
[[SysFn12/ru|Функция 12]] - начать/закончить перерисовку окна.<br />
<br />
[[SysFn13/ru|Функция 13]] - нарисовать прямоугольник в окне.<br />
<br />
[[SysFn14/ru|Функция 14]] - получить размеры экрана.<br />
<br />
[[SysFn15/ru | Функция 15]] - работа с фоновой графикой<br />
<br />
[[SysFn16/ru|Функция 16]] - сохранить рамдиск на дискету.<br />
<br />
[[SysFn17/ru|Функция 17]] - получить код нажатой кнопки.<br />
<br />
[[SysFn18/ru|Функция 18]] - системные настройки и информация<br />
<br />
[[SysFn20/ru|Функция 20]] - интерфейс MIDI.<br />
<br />
[[SysFn21/ru|Функция 21]] - установка системных параметров<br />
<br />
[[SysFn22/ru|Функция 22]] - установить системную дату/время.<br />
<br />
[[SysFn23/ru|Функция 23]] - ожидать события с таймаутом.<br />
<br />
[[SysFn24/ru|Функция 24]] - работа с проигрывателем компакт-дисков<br />
<br />
Функция 25 - установить громкость SBPro. - '''Удалена'''<br />
<br />
[[SysFn26/ru|Функция 26]] - аппаратный сервис<br />
<br />
Функция 27 - сведения об этой функции отсутствуют<br />
<br />
Функция 28 - установить громкость SB16. - '''Удалена'''<br />
<br />
[[SysFn29/ru|Функция 29]] - получить системную дату.<br />
<br />
[[SysFn30/ru|Функция 30]] - работа с текущей папкой.<br />
<br />
Функция 31 - сведения об этой функции отсутствуют<br />
<br />
Функция 32 - использовалась в ранних версиях КОС для удаления файла с рамдиска.- '''удалена'''<br />
<br />
Функция 33 - использовалась в ранних версиях КОС для записи файла на рамдиск.-'''удалена'''<br />
<br />
Функция 34 - сведения об этой функции отсутствуют<br />
<br />
[[SysFn35/ru|Функция 35]] - прочитать цвет точки на экране.<br />
<br />
[[SysFn36/ru|Функция 36]] - прочитать область экрана.<br />
<br />
[[SysFn37/ru|Функция 37]] - работа с мышью.<br />
<br />
[[SysFn38/ru|Функция 38]] - нарисовать отрезок.<br />
<br />
[[SysFn39/ru|Функция 39]] - чтение фона.<br />
<br />
[[SysFn40/ru|Функция 40]] - установить маску для ожидаемых событий.<br />
<br />
Функция 41 - узнать владельца IRQ. - '''Удалена'''<br />
<br />
Функция 42 - работа с данными, полученными по IRQ. - '''Удалена'''<br />
<br />
[[SysFn43/ru|Функция 43]] - ввод/вывод в порт.<br />
<br />
Функция 44 - определить действия при поступлении IRQ. - '''Удалена'''<br />
<br />
Функция 45 - зарезервировать/освободить IRQ. - '''Удалена'''<br />
<br />
[[SysFn46/ru|Функция 46]] - зарезервировать/освободить группу портов ввода/вывода.<br />
* '''Внимание:''' Эта функция устарела и может быть удалена в следующих версиях ядра. <br />
<br />
[[SysFn47/ru|Функция 47]] - вывести число в окно.<br />
<br />
[[SysFn48/ru|Функция 48]] - стили отображения окон<br />
<br />
[[SysFn49/ru|Функция 49]] - Advanced Power Management (APM).<br />
<br />
[[SysFn50/ru|Функция 50]] - установка формы окна.<br />
<br />
[[SysFn51/ru|Функция 51]] - создать поток.<br />
<br />
[[SysFn52/ru|Функция 52]] - сетевой сервис.<br />
<br />
[[SysFn53/ru|Функция 53]] - работа с сетевым сокетами.<br />
<br />
Функция 54 - Зарезервирована (возвращает 0x12345678 в eax).<br />
<br />
[[SysFn55/ru | Функция 55]] - аудио сервис.<br />
* Подфункция 0 - загрузить данные для SB16.<br />
* Подфункция 1 - начать проигрывать данные на SB16.<br />
* Подфункция 2 - установить формат данных SB16.<br />
* Подфункция 55 - начать проигрывать данные на встроенном спикере.<br />
<br />
Функция 56 - Зарезервирована.<br />
<br />
[[SysFn57/ru | Функция 57]] - PCI BIOS.<br />
<br />
[[SysFn58/ru | Функция 58]] - работа с файловой системой.<br />
* Подфункция 0 - прочитать файл/папку.<br />
* Подфункция 8 - LBA-чтение с устройства.<br />
* Подфункция 15 - получить информацию о файловой системе.<br />
<br />
Функция 59 - Зарезервирована.<br />
<br />
[[SysFn60/ru | Функция 60]] - Inter Process Communication (IPC).<br />
* Подфункция 1 - установить область для получения IPC<br />
<br />
[[SysFn61/ru | Функция 61]] - получить параметры для прямого доступа к графике.<br />
<br />
[[SysFn62/ru|Функция 62]] - пользовательский доступ к PCI.<br />
* Подфункция 0 - получить версию PCI-интерфейса.<br />
* Подфункция 1 - получить номер последней PCI-шины.<br />
* Подфункция 2 - Получить механизм обращения к конфигурационному пространству PCI.<br />
* подфункции 4,5,6 - прочитать PCI-регистр.<br />
* подфункции 8,9,10 - записать в PCI-регистр.<br />
* подфункция 11 - инициализировать доступ к MMIO<br />
* подфункция 12 - получить линейный адрес MMIO-блока<br />
* подфункция 13 - освободить линейные адреса MMIO<br />
<br />
[[SysFn63/ru|Функция 63]] - работа с доской отладки.<br />
<br />
[[SysFn64/ru|Функция 64]] - перераспределить память приложения.<br />
<br />
[[SysFn65/ru|Функция 65]] - вывести изображение с палитрой в окно.<br />
<br />
[[SysFn66/ru|Функция 66]] - работа с клавиатурой.<br />
* Подфункция 1 - установить режим ввода с клавиатуры.<br />
* Подфункция 2 - получить режим ввода с клавиатуры.<br />
* Подфункция 3 - получить состояние управляющих клавиш.<br />
* Подфункция 4 - установить общесистемную "горячую клавишу".<br />
* Подфункция 5 - удалить установленную "горячую клавишу".<br />
<br />
[[SysFn67/ru|Функция 67]] - изменить положение/размеры окна.<br />
<br />
[[SysFn68/ru|Функция 68]] - внутренние системные службы<br />
*Подфункция 0 - получить счётчик переключений задач.<br />
*Подфункция 1 - переключиться на следующий поток выполнения.<br />
*Подфункция 2 - кэш + rdpmc.<br />
*Подфункция 3 - прочитать MSR-регистр.<br />
*Подфункция 4 - записать в MSR-регистр.<br />
*Подфункция 11 - инициализировать кучу процесса.<br />
*Подфункция 12 - выделить блок памяти.<br />
*Подфункция 13 - освободить блок памяти.<br />
*Подфункция 14 - ожидать извещения от драйвера.<br />
*Подфункция 15 - установить обработчик исключений FPU.<br />
*Подфункция 16 - загрузить драйвер.<br />
*Подфункция 17 - управление драйвером.<br />
*Подфункция 18 - установить обработчик исключений SSE.<br />
*Подфункция 19 - загрузить DLL.<br />
*Подфункция 20 - перераспределить блок памяти.<br />
*Подфункция 22 - открыть именованую область памяти.<br />
*Подфункция 23 - закрыть именованую область памяти.<br />
<br />
[[SysFn69/ru|Функция 69]] - отладка.<br />
*Подфункция 0 - определить область данных для отладочных сообщений.<br />
*Подфункция 1 - получить состояние регистров отлаживаемого потока.<br />
*Подфункция 2 - установить состояние регистров отлаживаемого потока.<br />
*Подфункция 3 - отключиться от отлаживаемого процесса.<br />
*Подфункция 4 - приостановить поток.<br />
*Подфункция 5 - возобновить выполнение потока.<br />
*Подфункция 6 - прочитать из памяти отлаживаемого процесса.<br />
*Подфункция 7 - записать в память отлаживаемого процесса.<br />
*Подфункция 8 - завершить отлаживаемый поток.<br />
*Подфункция 9 - установить/снять аппаратную точку останова.<br />
<br />
[[SysFn70/ru|Функция 70]] - работа с файловой системой с поддержкой длинных имён.<br />
* Подфункция 0 - чтение файла с поддержкой длинных имён.<br />
* Подфункция 1 - чтение папки с поддержкой длинных имён.<br />
* Подфункция 2 - создание/перезапись файла с поддержкой длинных имён.<br />
* Подфункция 3 - запись в существующий файл с поддержкой длинных имён.<br />
* Подфункция 4 - установка размера файла.<br />
* Подфункция 5 - получение информации о файле/папке.<br />
* Подфункция 6 - установка атрибутов файла/папки.<br />
* Подфункция 7 - запуск программы.<br />
* Подфункция 8 - удаление файла/папки.<br />
* Подфункция 9 - создание папки.<br />
<br />
Описание функции перенесено в отдельную статью: [[SysFn71/ru|Функция 71]] - параметры окна<br />
* Подфункция 1 - установить заголовок окна программы.<br />
<br />
[[SysFn72/ru|Функция 72]] - послать сообщение окну.<br />
* Подфункция 1 - послать сообщение с параметром активному окну.<br />
<br />
[[SysFn73/ru|Функция 73]] - программный блиттер.<br />
<br />
[[SysFn-1/ru|Функция -1]] - завершить выполнение потока/процесса<br />
<br />
== Список событий ==<br />
<br />
Очередное событие можно получить вызовом одной из функций 10<br />
(ожидать события), 11 (проверить без ожидания), 23<br />
(ожидать в течение заданного времени).<br />
Эти функции возвращают только те события, которые входят в маску,<br />
устанавливаемую функцией 40. По умолчанию это первые три, чего<br />
вполне достаточно для многих приложений.<br />
Коды событий:<br />
* 1 = сообщение о перерисовке (сбрасывается при вызове функции 0)<br />
* 2 = нажата клавиша на клавиатуре (поступает, только когда окно активно) или нажата "горячая клавиша";<br />
** сбрасывается, когда все клавиши из буфера считаны функцией 2<br />
* 3 = нажата кнопка, определённая ранее функцией 8 (или кнопка закрытия, созданная неявно функцией 0; кнопка минимизации обрабатывается системой и о ней сообщения не приходит;<br />
** поступает, только когда окно активно; <br />
** сбрасывается, когда все кнопки из буфера считаны функцией 17)<br />
* 4 = зарезервировано (в текущей реализации никогда не приходит даже при размаскировке функцией 40)<br />
* 5 = перерисовывается фон рабочего стола (сбрасывается автоматически после перерисовки, так что если во время перерисовки фона программа не ждёт и не проверяет события, то этого события она не заметит)<br />
* 6 = событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении)<br />
* 7 = произошло событие IPC (смотри функцию 60 - Inter Process Communication; сбрасывается при прочтении)<br />
* 8 = произошло сетевое событие (сбрасывается при прочтении; смотри работу с сетью)<br />
* 9 = произошло отладочное событие (сбрасывается при прочтении; смотри отладочную подсистему)<br />
* 16..31 - ранее использовались для проверки соответвующих IRQ (16=IRQ0, 31=IRQ15) (на новых версиях ядра не генерируются)<br />
<br />
== Коды ошибок файловой системы ==<br />
<br />
* 0 = успешно<br />
* 1 = не определена база и/или раздел жёсткого диска (подфункциями 7, 8 функции 21)<br />
* 2 = функция не поддерживается для данной файловой системы<br />
* 3 = неизвестная файловая система<br />
* 4 = зарезервировано, никогда не возвращается в текущей реализации<br />
* 5 = файл не найден<br />
* 6 = файл закончился<br />
* 7 = указатель вне памяти приложения<br />
* 8 = диск заполнен<br />
* 9 = таблица FAT разрушена<br />
* 10 = доступ запрещён<br />
* 11 = ошибка устройства<br />
<br />
При запуске программы возможны также следующие коды ошибок:<br />
* 30 = 0x1E = недостаточно памяти<br />
* 31 = 0x1F = файл не является исполнимым<br />
* 32 = 0x20 = слишком много процессов<br />
<br />
[[Category:Coding]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Ru/api/kernel&diff=3361Ru/api/kernel2011-09-04T18:06:33Z<p>Art zh: /* Список событий */</p>
<hr />
<div>''' СИСТЕМНЫЕ ФУНКЦИИ KolibriOS 0.7.7.0 '''<br />
<br />
Номер функции помещается в регистр eax.<br />
Вызов системной функции осуществляется командой "int 0x40".<br />
Все регистры, кроме явно указанных в возвращаемом значении, включая регистр флагов eflags, сохраняются.<br />
<br />
== Перечень функций ==<br />
<br />
[[SysFn00/ru | Функция 0]] - определить и нарисовать окно.<br />
<br />
[[SysFn01/ru | Функция 1]] - поставить точку в окне.<br />
<br />
[[SysFn02/ru | Функция 2]] - получить код нажатой клавиши.<br />
<br />
[[SysFn03/ru | Функция 3]] - получить системное время.<br />
<br />
[[SysFn04/ru | Функция 4]] - вывести строку текста в окно.<br />
<br />
[[SysFn05/ru | Функция 5]] - пауза.<br />
<br />
[[SysFn06/ru | Функция 6]] - прочитать файл с рамдиска.<br />
<br />
[[SysFn07/ru | Функция 7]] - вывести изображение в окно.<br />
<br />
[[SysFn08/ru | Функция 8]] - определить/удалить кнопку.<br />
<br />
[[SysFn09/ru | Функция 9]] - информация о потоке выполнения.<br />
<br />
[[SysFn10/ru | Функция 10]] - ожидать события.<br />
<br />
[[SysFn11/ru|Функция 11]] - проверить, есть ли событие, без ожидания.<br />
<br />
[[SysFn12/ru|Функция 12]] - начать/закончить перерисовку окна.<br />
<br />
[[SysFn13/ru|Функция 13]] - нарисовать прямоугольник в окне.<br />
<br />
[[SysFn14/ru|Функция 14]] - получить размеры экрана.<br />
<br />
[[SysFn15/ru | Функция 15]] - работа с фоновой графикой<br />
<br />
[[SysFn16/ru|Функция 16]] - сохранить рамдиск на дискету.<br />
<br />
[[SysFn17/ru|Функция 17]] - получить код нажатой кнопки.<br />
<br />
[[SysFn18/ru|Функция 18]] - системные настройки и информация<br />
<br />
[[SysFn20/ru|Функция 20]] - интерфейс MIDI.<br />
<br />
[[SysFn21/ru|Функция 21]] - установка системных параметров<br />
<br />
[[SysFn22/ru|Функция 22]] - установить системную дату/время.<br />
<br />
[[SysFn23/ru|Функция 23]] - ожидать события с таймаутом.<br />
<br />
[[SysFn24/ru|Функция 24]] - работа с проигрывателем компакт-дисков<br />
<br />
Функция 25 - установить громкость SBPro. - '''Удалена'''<br />
<br />
[[SysFn26/ru|Функция 26]] - аппаратный сервис<br />
<br />
Функция 27 - сведения об этой функции отсутствуют<br />
<br />
Функция 28 - установить громкость SB16. - '''Удалена'''<br />
<br />
[[SysFn29/ru|Функция 29]] - получить системную дату.<br />
<br />
[[SysFn30/ru|Функция 30]] - работа с текущей папкой.<br />
<br />
Функция 31 - сведения об этой функции отсутствуют<br />
<br />
Функция 32 - использовалась в ранних версиях КОС для удаления файла с рамдиска.- '''удалена'''<br />
<br />
Функция 33 - использовалась в ранних версиях КОС для записи файла на рамдиск.-'''удалена'''<br />
<br />
Функция 34 - сведения об этой функции отсутствуют<br />
<br />
[[SysFn35/ru|Функция 35]] - прочитать цвет точки на экране.<br />
<br />
[[SysFn36/ru|Функция 36]] - прочитать область экрана.<br />
<br />
[[SysFn37/ru|Функция 37]] - работа с мышью.<br />
<br />
[[SysFn38/ru|Функция 38]] - нарисовать отрезок.<br />
<br />
[[SysFn39/ru|Функция 39]] - чтение фона.<br />
<br />
[[SysFn40/ru|Функция 40]] - установить маску для ожидаемых событий.<br />
<br />
Функция 41 - узнать владельца IRQ. - '''Удалена'''<br />
<br />
Функция 42 - работа с данными, полученными по IRQ. - '''Удалена'''<br />
<br />
[[SysFn43/ru|Функция 43]] - ввод/вывод в порт.<br />
<br />
Функция 44 - определить действия при поступлении IRQ. - '''Удалена'''<br />
<br />
Функция 45 - зарезервировать/освободить IRQ. - '''Удалена'''<br />
<br />
[[SysFn46/ru|Функция 46]] - зарезервировать/освободить группу портов ввода/вывода.<br />
* '''Внимание:''' Эта функция устарела и может быть удалена в следующих версиях ядра. <br />
<br />
[[SysFn47/ru|Функция 47]] - вывести число в окно.<br />
<br />
[[SysFn48/ru|Функция 48]] - стили отображения окон<br />
<br />
[[SysFn49/ru|Функция 49]] - Advanced Power Management (APM).<br />
<br />
[[SysFn50/ru|Функция 50]] - установка формы окна.<br />
<br />
[[SysFn51/ru|Функция 51]] - создать поток.<br />
<br />
[[SysFn52/ru|Функция 52]] - сетевой сервис.<br />
<br />
[[SysFn53/ru|Функция 53]] - работа с сетевым сокетами.<br />
<br />
Функция 54 - Зарезервирована (возвращает 0x12345678 в eax).<br />
<br />
[[SysFn55/ru | Функция 55]] - аудио сервис.<br />
* Подфункция 0 - загрузить данные для SB16.<br />
* Подфункция 1 - начать проигрывать данные на SB16.<br />
* Подфункция 2 - установить формат данных SB16.<br />
* Подфункция 55 - начать проигрывать данные на встроенном спикере.<br />
<br />
Функция 56 - Зарезервирована.<br />
<br />
[[SysFn57/ru | Функция 57]] - PCI BIOS.<br />
<br />
[[SysFn58/ru | Функция 58]] - работа с файловой системой.<br />
* Подфункция 0 - прочитать файл/папку.<br />
* Подфункция 8 - LBA-чтение с устройства.<br />
* Подфункция 15 - получить информацию о файловой системе.<br />
<br />
Функция 59 - Зарезервирована.<br />
<br />
[[SysFn60/ru | Функция 60]] - Inter Process Communication (IPC).<br />
* Подфункция 1 - установить область для получения IPC<br />
<br />
[[SysFn61/ru | Функция 61]] - получить параметры для прямого доступа к графике.<br />
<br />
[[SysFn62/ru|Функция 62]] - пользовательский доступ к PCI.<br />
* Подфункция 0 - получить версию PCI-интерфейса.<br />
* Подфункция 1 - получить номер последней PCI-шины.<br />
* Подфункция 2 - Получить механизм обращения к конфигурационному пространству PCI.<br />
* подфункции 4,5,6 - прочитать PCI-регистр.<br />
* подфункции 8,9,10 - записать в PCI-регистр.<br />
* подфункция 11 - инициализировать доступ к MMIO<br />
* подфункция 12 - получить линейный адрес MMIO-блока<br />
* подфункция 13 - освободить линейные адреса MMIO<br />
<br />
[[SysFn63/ru|Функция 63]] - работа с доской отладки.<br />
<br />
[[SysFn64/ru|Функция 64]] - перераспределить память приложения.<br />
<br />
[[SysFn65/ru|Функция 65]] - вывести изображение с палитрой в окно.<br />
<br />
[[SysFn66/ru|Функция 66]] - работа с клавиатурой.<br />
* Подфункция 1 - установить режим ввода с клавиатуры.<br />
* Подфункция 2 - получить режим ввода с клавиатуры.<br />
* Подфункция 3 - получить состояние управляющих клавиш.<br />
* Подфункция 4 - установить общесистемную "горячую клавишу".<br />
* Подфункция 5 - удалить установленную "горячую клавишу".<br />
<br />
[[SysFn67/ru|Функция 67]] - изменить положение/размеры окна.<br />
<br />
[[SysFn68/ru|Функция 68]] - внутренние системные службы<br />
*Подфункция 0 - получить счётчик переключений задач.<br />
*Подфункция 1 - переключиться на следующий поток выполнения.<br />
*Подфункция 2 - кэш + rdpmc.<br />
*Подфункция 3 - прочитать MSR-регистр.<br />
*Подфункция 4 - записать в MSR-регистр.<br />
*Подфункция 11 - инициализировать кучу процесса.<br />
*Подфункция 12 - выделить блок памяти.<br />
*Подфункция 13 - освободить блок памяти.<br />
*Подфункция 14 - ожидать извещения от драйвера.<br />
*Подфункция 15 - установить обработчик исключений FPU.<br />
*Подфункция 16 - загрузить драйвер.<br />
*Подфункция 17 - управление драйвером.<br />
*Подфункция 18 - установить обработчик исключений SSE.<br />
*Подфункция 19 - загрузить DLL.<br />
*Подфункция 20 - перераспределить блок памяти.<br />
*Подфункция 22 - открыть именованую область памяти.<br />
*Подфункция 23 - закрыть именованую область памяти.<br />
<br />
[[SysFn69/ru|Функция 69]] - отладка.<br />
*Подфункция 0 - определить область данных для отладочных сообщений.<br />
*Подфункция 1 - получить состояние регистров отлаживаемого потока.<br />
*Подфункция 2 - установить состояние регистров отлаживаемого потока.<br />
*Подфункция 3 - отключиться от отлаживаемого процесса.<br />
*Подфункция 4 - приостановить поток.<br />
*Подфункция 5 - возобновить выполнение потока.<br />
*Подфункция 6 - прочитать из памяти отлаживаемого процесса.<br />
*Подфункция 7 - записать в память отлаживаемого процесса.<br />
*Подфункция 8 - завершить отлаживаемый поток.<br />
*Подфункция 9 - установить/снять аппаратную точку останова.<br />
<br />
[[SysFn70/ru|Функция 70]] - работа с файловой системой с поддержкой длинных имён.<br />
* Подфункция 0 - чтение файла с поддержкой длинных имён.<br />
* Подфункция 1 - чтение папки с поддержкой длинных имён.<br />
* Подфункция 2 - создание/перезапись файла с поддержкой длинных имён.<br />
* Подфункция 3 - запись в существующий файл с поддержкой длинных имён.<br />
* Подфункция 4 - установка размера файла.<br />
* Подфункция 5 - получение информации о файле/папке.<br />
* Подфункция 6 - установка атрибутов файла/папки.<br />
* Подфункция 7 - запуск программы.<br />
* Подфункция 8 - удаление файла/папки.<br />
* Подфункция 9 - создание папки.<br />
<br />
Описание функции перенесено в отдельную статью: [[SysFn71/ru|Функция 71]] - параметры окна<br />
* Подфункция 1 - установить заголовок окна программы.<br />
<br />
[[SysFn72/ru|Функция 72]] - послать сообщение окну.<br />
* Подфункция 1 - послать сообщение с параметром активному окну.<br />
<br />
[[SysFn-1/ru|Функция -1]] - завершить выполнение потока/процесса<br />
<br />
== Список событий ==<br />
<br />
Очередное событие можно получить вызовом одной из функций 10<br />
(ожидать события), 11 (проверить без ожидания), 23<br />
(ожидать в течение заданного времени).<br />
Эти функции возвращают только те события, которые входят в маску,<br />
устанавливаемую функцией 40. По умолчанию это первые три, чего<br />
вполне достаточно для многих приложений.<br />
Коды событий:<br />
* 1 = сообщение о перерисовке (сбрасывается при вызове функции 0)<br />
* 2 = нажата клавиша на клавиатуре (поступает, только когда окно активно) или нажата "горячая клавиша";<br />
** сбрасывается, когда все клавиши из буфера считаны функцией 2<br />
* 3 = нажата кнопка, определённая ранее функцией 8 (или кнопка закрытия, созданная неявно функцией 0; кнопка минимизации обрабатывается системой и о ней сообщения не приходит;<br />
** поступает, только когда окно активно; <br />
** сбрасывается, когда все кнопки из буфера считаны функцией 17)<br />
* 4 = зарезервировано (в текущей реализации никогда не приходит даже при размаскировке функцией 40)<br />
* 5 = перерисовывается фон рабочего стола (сбрасывается автоматически после перерисовки, так что если во время перерисовки фона программа не ждёт и не проверяет события, то этого события она не заметит)<br />
* 6 = событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении)<br />
* 7 = произошло событие IPC (смотри функцию 60 - Inter Process Communication; сбрасывается при прочтении)<br />
* 8 = произошло сетевое событие (сбрасывается при прочтении; смотри работу с сетью)<br />
* 9 = произошло отладочное событие (сбрасывается при прочтении; смотри отладочную подсистему)<br />
* 16..31 - ранее использовались для проверки соответвующих IRQ (16=IRQ0, 31=IRQ15) (на новых версиях ядра не генерируются)<br />
<br />
== Коды ошибок файловой системы ==<br />
<br />
* 0 = успешно<br />
* 1 = не определена база и/или раздел жёсткого диска (подфункциями 7, 8 функции 21)<br />
* 2 = функция не поддерживается для данной файловой системы<br />
* 3 = неизвестная файловая система<br />
* 4 = зарезервировано, никогда не возвращается в текущей реализации<br />
* 5 = файл не найден<br />
* 6 = файл закончился<br />
* 7 = указатель вне памяти приложения<br />
* 8 = диск заполнен<br />
* 9 = таблица FAT разрушена<br />
* 10 = доступ запрещён<br />
* 11 = ошибка устройства<br />
<br />
При запуске программы возможны также следующие коды ошибок:<br />
* 30 = 0x1E = недостаточно памяти<br />
* 31 = 0x1F = файл не является исполнимым<br />
* 32 = 0x20 = слишком много процессов<br />
<br />
[[Category:Coding]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=EmbeddedKOS/ru&diff=3359EmbeddedKOS/ru2011-09-02T10:39:39Z<p>Art zh: </p>
<hr />
<div>== Embedded-KOS - Колибри для встроенных систем ==<br />
<br />
Ряд практических работ, проведенных участниками проекта (см. например [http://board.kolibrios.org/viewtopic.php?t=897 Колибри на производстве]), показал принципиальную возможность внедрения КолибриОС в составе систем сбора/обработки информации и АСУП.<br /><br />
<br />
Компактное ядро с открытым кодом, минималистская простота и удобство графической подсистемы, достаточно развитый пользовательский интерфейс, приличный низкоуровневый системынй сервис, поддержка наиболее популярных сетевых протоколов и файловых систем - всё это уже сейчас позволяет говорить о Колибри как о перспективной ОС для встроенных систем.<br /><br />
<br />
В то же время, для превращения Колибри в полноценную embedded-OS требуется решить ряд серьёзных проблем: [http://board.kolibrios.org/viewtopic.php?t=1211]. <br />
<br />
Опробование вариантов таких решений ведется в рамках проекта '''Колибри-А''' (литера "А" подчеркивает привязку кода к архитектуре AMD/HT).<br /><br />
<br />
Колибри-А — пока еще очень сырая и экспериментальная система, полезная только для квалифицированных системотехников, системных программистов, а также разработчиков и наладчиков компьютерного оборудования. <big>Разработчики предупреждают, что многие стандартные механизмы системной защиты и контроля доступа к критическим системным ресурсам в Колибри-А '''отключены''' с целью облегчения максимально свободого и удобного доступа к оборудованию. Использование этой системы на домашних, офисных и серверных компьютерах '''категорически противопоказано''' и может повлечь невосстановимую потерю данных и полный выход из строя компьютера и/или подключенных к нему периферийных устройств. <br />
</big><br />
<br />
Итак, мы Вас предупредили...<br />
<br />
-----<br />
<br />
<br />
'''Некоторые особенности Колибри-А'''<br /><br />
* Повышенные требования к [[Embedded_Hardware/ru|аппаратной платформе]].<br />
* Дополнительный [[Embedded_API/ru|API-сервис]], предоставляющий пользователю расширенный и быстрый доступ к низкоуровневому вводу/выводу. <br /><br />
* Бездрайверный [[SubFn62-DA/ru|ПДП]] и контроль нестандартной аппаратуры через доступный из пользовательского пространства статический системный буфер.<br />
* Расширенная поддержка функций PCI-express с элементами тренинга шины, MSI и контроля режимов питания. <br /><br />
* Размер ядра заметно сокращен - исключены многие избыточные, узкоспециальные и рудиментарные системные структуры и функции:<br />
** исключены видеорежимы низкого разрешения (ниже 800х600);<br />
** оставлен единственный видеорежим (VESA2, глубина цвета 32bpp);<br />
** из файловых систем оставлена только FAT.<br />
** убирается поддержка APM; реализовано прямое управление электропитанием.<br />
<br />
'''На очереди:'''<br /><br />
* Оптимизированный под RT-приложения менеджер памяти.<br />
* Минимальная поддержка APIC. <br />
* Полная поддержка PCIe, включая MSI, обработку ошибок, хотплаг и управление виртуальными каналами.<br />
* Реализация быстрой загрузки ядра из ПЗУ. <br />
* Поддержка SATA-дисков (пока только в IDE-режиме).<br />
* Поддержка некоторых классов USB-устройств .<br />
* Дальнейшее уплотнение ядра<br />
<br />
'''Конечная цель: '''<br /><br />
а) 100% монолитное бездрайверное ядро, <br /><br />
б) жестко привязанное к выбранной платформе, <br /><br />
в) легко конфигурируемое под конкретную задачу, и <br /><br />
г) прошитое в бортовое ПЗУ.<br /><br />
<br />
'''Вариант реализации: '''<br />
<br />
Как payload для проекта [http://www.coreboot.org/ coreboot]. Работа над этим ведется [http://board.kolibrios.org/viewtopic.php?f=4&t=1368]<br />
Для успешного осуществления требуется удаление зависимости ядра KolibriOS от вызовов BIOS.<br />
Ссылки по теме [http://www.coreboot.org/Payloads] [http://www.coreboot.org/Development_Guidelines] [http://www.coreboot.org/Developer_Manual]<br />
<br />
[[Category:Coding]]<br />
[[Category:Системная документация]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Embedded_Hardware/ru&diff=3358Embedded Hardware/ru2011-09-02T10:31:12Z<p>Art zh: </p>
<hr />
<div>Для встраиваимых версий КолибриОС важнейшим является выбор аппаратной платформы.<br />
Обсуждение возможных вариантов, плюсов и минусов ведется здесь[http://board.kolibrios.org/viewtopic.php?f=25&t=1683&p=32843#p32843]; <br />
дискуссионные материалы и таблицы вынесены на отдельную страницу [[Embedded_Platforms/ru|Вики]]. <br />
<br />
Что касается пилотной встраиваемой версии [[EmbeddedKOS/ru|Колибри-А]], то она разрабатывается под платформу AMD 780 и не претендует на универсальность.<br />
<br />
Необходимые системные ресурсы:<br />
*ЦП: AMD-NPT gen.0F+ (тестируется на Athlon64x2/AM2, Sempron140/AM3 и Fusion E350)<br />
*NB: AMD690+ (соответственно 770G, 760G; на Fusion NB спрятан в чип APU )<br />
*SB: SB700+ (SB710, SB710 и Hudson_A55)<br />
*встроенная в чипсет графика<br />
*монитор с разрешением не менее 800х600<br />
<br />
<br />
<br />
Не поддерживаемые ресурсы:<br />
*ЦП без поддержки HT-канала и внутреннего контроллера памяти<br />
*чипсеты, не имеющие полноценной открытой документации<br />
*платформы без инициализированного BIOSом расширенного конфигурационного пространства PCIexpress (присутствие самой шины PCIe не обязательно)<br />
*COM-мыш<br />
*FDD-дисковод и CD-ROM<br />
*EGA и VGA мониторы<br />
*Файловые системы NTFS и EXT2/3<br />
<br />
[[Category:Системная документация]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Template:System_functions&diff=3357Template:System functions2011-09-02T10:15:07Z<p>Art zh: </p>
<hr />
<div>{{Navbox<br />
| title = [[:Category:SysCalls|Системные функции]]<br />
<br />
| group1 = Оконный интерфейс<br />
| list1 = {{nowrap|[[SysFn00/ru|0 - определить окно]] &bull;}} {{nowrap|[[SysFn08/ru|8 - оконные кнопки]] &bull;}} {{nowrap|[[SysFn10/ru|10 - неограниченное ожидание события]] &bull;}} {{nowrap|[[SysFn11/ru|11 - проверка события]] &bull;}} {{nowrap|[[SysFn17/ru|17 - идентификатор оконной кнопки]] &bull;}} {{nowrap|[[SysFn23/ru|23 - ограниченное ожидание события]] &bull;}} {{nowrap|[[SysFn40/ru|40 - маска событий]] &bull;}} {{nowrap|[[SysFn67/ru|67 - изменить окно]] &bull;}} {{nowrap|[[SysFn71/ru|71 - заголовок окна]] &bull;}} {{nowrap|[[SysFn72/ru|72 - сообщение окну]]}}<br />
<br />
| group2 = Ввод<br />
| list2 = {{nowrap|[[SysFn02/ru|2 - код нажатой клавиши]] &bull;}} {{nowrap|[[SysFn37/ru|37 - мышь]] &bull;}} {{nowrap|[[SysFn66/ru|66 - режимы клавиатуры]]}}<br />
<br />
| group3 = Графика<br />
| list3 = {{nowrap|[[SysFn01/ru|1 - точка]] &bull;}} {{nowrap|[[SysFn04/ru|4 - текст]] &bull;}} {{nowrap|[[SysFn07/ru|7 - изображение]] &bull;}} {{nowrap|[[SysFn12/ru|12 - перерисовка окна]] &bull;}} {{nowrap|[[SysFn13/ru|13 - прямоугольник]] &bull;}} {{nowrap|[[SysFn14/ru|14 - размеры экрана]] &bull;}} {{nowrap|[[SysFn15/ru|15 - фон]] &bull;}} {{nowrap|[[SysFn35/ru|35 - чтение точки]] &bull;}} {{nowrap|[[SysFn36/ru|36 - чтение области]] &bull;}} {{nowrap|[[SysFn38/ru|38 - линия]] &bull;}} {{nowrap|[[SysFn39/ru|39 - чтение фона]] &bull;}} {{nowrap|[[SysFn47/ru|47 - вывод числа]] &bull;}} {{nowrap|[[SysFn48/ru|48 - параметры графики]] &bull;}} {{nowrap|[[SysFn50/ru|50 - форма окна]] &bull;}} {{nowrap|[[SysFn61/ru|61 - прямой доступ к графике]] &bull;}} {{nowrap|[[SysFn65/ru|65 - изображение с палитрой]] &bull;}} {{nowrap|[[SysFn73/ru|73 - блиттер]]}}<br />
| group4 = Системный сервис<br />
| list4 = {{nowrap|[[SysFn03/ru|3 - запрос системного времени]] &bull;}} {{nowrap|[[SysFn18/ru|18 - системные службы]] &bull;}} {{nowrap|[[SysFn21/ru|21 - установка системных параметров]] &bull;}} {{nowrap|[[SysFn22/ru|22 - установка даты и времени]] &bull;}} {{nowrap|[[SysFn26/ru|26 - чтение системных параметров]] &bull;}} {{nowrap|[[SysFn29/ru|29 - запрос даты]] &bull;}} {{nowrap|[[SysFn63/ru|63 - работа с доской отладки]] &bull;}} {{nowrap|[[SysFn68/ru|68 - внутренние системные службы]] &bull;}} {{nowrap|[[SysFn69/ru|69 - отладка]]}}<br />
<br />
| group5 = Процессы и потоки<br />
| list5 = {{nowrap|[[SysFn05/ru|5 - пауза]] &bull;}} {{nowrap|[[SysFn09/ru|9 - информация о потоке]] &bull;}} {{nowrap|[[SysFn51/ru|51 - создание потока]] &bull;}} {{nowrap|[[SysFn60/ru|60 - взаимодействие между процессами]] &bull;}} {{nowrap|[[SysFn64/ru|64 - динамическая память]] &bull;}} {{nowrap|[[SysFn70/ru|70.7 - запуск приложения]] &bull;}} {{nowrap|[[SysFn-1/ru|-1 - завершение потока/процесса]]}}<br />
<br />
| group6 = Файловая система<br />
| list6 = {{nowrap|[[SysFn06/ru|6 - чтение с рам-диска]] &bull;}} {{nowrap|[[SysFn16/ru|16 - сохранение рам-диска]] &bull;}} {{nowrap|[[SysFn30/ru|30 - работа с текущей папкой]] &bull;}} {{nowrap|[[SysFn58/ru|58 - файловая системой 8.3]] &bull;}} {{nowrap|[[SysFn70/ru|70 - файловая система с поддержкой длинных имен]]}}<br />
<br />
| group7 = Аппаратные функции<br />
| list7 = {{nowrap|[[SysFn41/ru|41 - запрос владельца IRQ]] &bull;}} {{nowrap|[[SysFn42/ru|42 - получение данных по IRQ]] &bull;}} {{nowrap|[[SysFn43/ru|43 - порты ввода/вывода]] &bull;}} {{nowrap|[[SysFn44/ru|44 - запрос блока данных по IRQ]] &bull;}} {{nowrap|[[SysFn45/ru|45 - зарезервировать/освободить IRQ]] &bull;}} {{nowrap|[[SysFn46/ru|46 - зарезервировать/освободить группу портов]] &bull;}} {{nowrap|[[SysFn49/ru|49 - управление питанием (APM)]] &bull;}} {{nowrap|[[SysFn57/ru|57 - доступ к PCI BIOS]] &bull;}} {{nowrap|[[SysFn62/ru|62 - PCI-сервис]]}}<br />
<br />
| group8 = Звук<br />
| list8 = {{nowrap|[[SysFn20/ru|20 - интерфейс MIDI/MPU401]] &bull;}} {{nowrap|[[SysFn24/ru|24 - работа с CD и CD-Audio]] &bull;}} {{nowrap|[[SysFn55/ru|55 - встроенный спикер]]}}<br />
<br />
| group9 = Сеть<br />
| list9 = {{nowrap|[[SysFn52/ru|52 - сетевой драйвер]] &bull;}} {{nowrap|[[SysFn53/ru|53 - сетевые сокеты]]}}<br />
}}</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Template:System_functions&diff=3356Template:System functions2011-09-02T10:13:30Z<p>Art zh: +73</p>
<hr />
<div>{{Navbox<br />
| title = [[:Category:SysCalls|Системные функции]]<br />
<br />
| group1 = Оконный интерфейс<br />
| list1 = {{nowrap|[[SysFn00/ru|0 - определить окно]] &bull;}} {{nowrap|[[SysFn08/ru|8 - оконные кнопки]] &bull;}} {{nowrap|[[SysFn10/ru|10 - неограниченное ожидание события]] &bull;}} {{nowrap|[[SysFn11/ru|11 - проверка события]] &bull;}} {{nowrap|[[SysFn17/ru|17 - идентификатор оконной кнопки]] &bull;}} {{nowrap|[[SysFn23/ru|23 - ограниченное ожидание события]] &bull;}} {{nowrap|[[SysFn40/ru|40 - маска событий]] &bull;}} {{nowrap|[[SysFn67/ru|67 - изменить окно]] &bull;}} {{nowrap|[[SysFn71/ru|71 - заголовок окна]] &bull;}} {{nowrap|[[SysFn72/ru|72 - сообщение окну]]}}<br />
<br />
| group2 = Ввод<br />
| list2 = {{nowrap|[[SysFn02/ru|2 - код нажатой клавиши]] &bull;}} {{nowrap|[[SysFn37/ru|37 - мышь]] &bull;}} {{nowrap|[[SysFn66/ru|66 - режимы клавиатуры]]}}<br />
<br />
| group3 = Графика<br />
| list3 = {{nowrap|[[SysFn01/ru|1 - точка]] &bull;}} {{nowrap|[[SysFn04/ru|4 - текст]] &bull;}} {{nowrap|[[SysFn07/ru|7 - изображение]] &bull;}} {{nowrap|[[SysFn12/ru|12 - перерисовка окна]] &bull;}} {{nowrap|[[SysFn13/ru|13 - прямоугольник]] &bull;}} {{nowrap|[[SysFn14/ru|14 - размеры экрана]] &bull;}} {{nowrap|[[SysFn15/ru|15 - фон]] &bull;}} {{nowrap|[[SysFn35/ru|35 - чтение точки]] &bull;}} {{nowrap|[[SysFn36/ru|36 - чтение области]] &bull;}} {{nowrap|[[SysFn38/ru|38 - линия]] &bull;}} {{nowrap|[[SysFn39/ru|39 - чтение фона]] &bull;}} {{nowrap|[[SysFn47/ru|47 - вывод числа]] &bull;}} {{nowrap|[[SysFn48/ru|48 - параметры графики]] &bull;}} {{nowrap|[[SysFn50/ru|50 - форма окна]] &bull;}} {{nowrap|[[SysFn61/ru|61 - прямой доступ к графике]] &bull;}} {{nowrap|[[SysFn65/ru|65 - изображение с палитрой]]}} {{nowrap|[[SysFn73/ru|73 - блиттер]]}<br />
| group4 = Системный сервис<br />
| list4 = {{nowrap|[[SysFn03/ru|3 - запрос системного времени]] &bull;}} {{nowrap|[[SysFn18/ru|18 - системные службы]] &bull;}} {{nowrap|[[SysFn21/ru|21 - установка системных параметров]] &bull;}} {{nowrap|[[SysFn22/ru|22 - установка даты и времени]] &bull;}} {{nowrap|[[SysFn26/ru|26 - чтение системных параметров]] &bull;}} {{nowrap|[[SysFn29/ru|29 - запрос даты]] &bull;}} {{nowrap|[[SysFn63/ru|63 - работа с доской отладки]] &bull;}} {{nowrap|[[SysFn68/ru|68 - внутренние системные службы]] &bull;}} {{nowrap|[[SysFn69/ru|69 - отладка]]}}<br />
<br />
| group5 = Процессы и потоки<br />
| list5 = {{nowrap|[[SysFn05/ru|5 - пауза]] &bull;}} {{nowrap|[[SysFn09/ru|9 - информация о потоке]] &bull;}} {{nowrap|[[SysFn51/ru|51 - создание потока]] &bull;}} {{nowrap|[[SysFn60/ru|60 - взаимодействие между процессами]] &bull;}} {{nowrap|[[SysFn64/ru|64 - динамическая память]] &bull;}} {{nowrap|[[SysFn70/ru|70.7 - запуск приложения]] &bull;}} {{nowrap|[[SysFn-1/ru|-1 - завершение потока/процесса]]}}<br />
<br />
| group6 = Файловая система<br />
| list6 = {{nowrap|[[SysFn06/ru|6 - чтение с рам-диска]] &bull;}} {{nowrap|[[SysFn16/ru|16 - сохранение рам-диска]] &bull;}} {{nowrap|[[SysFn30/ru|30 - работа с текущей папкой]] &bull;}} {{nowrap|[[SysFn58/ru|58 - файловая системой 8.3]] &bull;}} {{nowrap|[[SysFn70/ru|70 - файловая система с поддержкой длинных имен]]}}<br />
<br />
| group7 = Аппаратные функции<br />
| list7 = {{nowrap|[[SysFn41/ru|41 - запрос владельца IRQ]] &bull;}} {{nowrap|[[SysFn42/ru|42 - получение данных по IRQ]] &bull;}} {{nowrap|[[SysFn43/ru|43 - порты ввода/вывода]] &bull;}} {{nowrap|[[SysFn44/ru|44 - запрос блока данных по IRQ]] &bull;}} {{nowrap|[[SysFn45/ru|45 - зарезервировать/освободить IRQ]] &bull;}} {{nowrap|[[SysFn46/ru|46 - зарезервировать/освободить группу портов]] &bull;}} {{nowrap|[[SysFn49/ru|49 - управление питанием (APM)]] &bull;}} {{nowrap|[[SysFn57/ru|57 - доступ к PCI BIOS]] &bull;}} {{nowrap|[[SysFn62/ru|62 - PCI-сервис]]}}<br />
<br />
| group8 = Звук<br />
| list8 = {{nowrap|[[SysFn20/ru|20 - интерфейс MIDI/MPU401]] &bull;}} {{nowrap|[[SysFn24/ru|24 - работа с CD и CD-Audio]] &bull;}} {{nowrap|[[SysFn55/ru|55 - встроенный спикер]]}}<br />
<br />
| group9 = Сеть<br />
| list9 = {{nowrap|[[SysFn52/ru|52 - сетевой драйвер]] &bull;}} {{nowrap|[[SysFn53/ru|53 - сетевые сокеты]]}}<br />
}}</div>Art zhhttp://wiki.kolibrios.org/index.php?title=SysFn73/ru&diff=3355SysFn73/ru2011-09-02T10:08:36Z<p>Art zh: New sysfn73</p>
<hr />
<div>'''Функция 73 - графический блиттер.'''<br />
<br />
''Параметры:''<br />
<br />
* eax = 73 - номер функции<br />
* ebx = 0 <br />
* ecx = указатель на структуру следующего формата:<br />
struct blit_call<br />
{<br />
int dstx; <br />
int dsty;<br />
int w;<br />
int h;<br />
<br />
int srcx;<br />
int srcy;<br />
int srcw;<br />
int srch;<br />
<br />
unsigned char *bitmap;<br />
int stride;<br />
};<br />
<br />
''Возвращаемое значение:''<br />
<br />
* функция не возвращает значения<br />
<br />
''Замечания:''<br />
<br />
* dstx,dsty - координаты левого верхнего угла назачения<br />
* w,h - ширина и высота копируемой области<br />
* srcx,srcy - координаты левого верхнего угла источника<br />
* srcw,srch - ширина и высота источника<br />
* bitmap - изображение 32bpp<br />
* stride - ширина строки в байтах<br />
<br />
{{System_functions}}<br />
[[Category: SysCalls]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=SysFn21/ru&diff=3354SysFn21/ru2011-09-02T09:52:32Z<p>Art zh: /* Подфункция 8 - предупреждение */</p>
<hr />
<div>'''Функция 21 - установка системных параметров'''<br />
<br />
----<br />
<br />
=== Подфункция 1 - установить базовый порт MPU MIDI. ===<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 1 - номер подфункции<br />
* ecx = номер базового порта<br />
Возвращаемое значение:<br />
* eax = 0 - успешно<br />
* eax = -1 - ошибочный номер порта<br />
Замечания:<br />
* Номер порта должен удовлетворять условиям 0x100<=ecx<=0xFFFF.<br />
* Установка базы нужна для работы функции 20.<br />
* Получить установленный базовый порт можно вызовом подфункции 1 функции 26.<br />
<br />
=== Подфункция 2 - установить раскладку клавиатуры. ===<br />
<br />
Раскладка клавиатуры используется для преобразования сканкодов, поступающих от клавиатуры, в ASCII-коды, считываемые функцией 2.<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 2 - номер подфункции<br />
* ecx = какую раскладку устанавливать:<br />
** 1 = нормальную<br />
** 2 = раскладку при нажатом Shift<br />
** 3 = раскладку при нажатом Alt<br />
* edx = указатель на раскладку - таблицу длиной 128 байт<br />
Или:<br />
* ecx = 9<br />
* dx = идентификатор страны (1=eng, 2=fi, 3=ger, 4=rus)<br />
<br />
Возвращаемое значение:<br />
* eax = 0 - успешно<br />
* eax = 1 - параметр задан неверно<br />
<br />
Замечания:<br />
* Если нажат Alt, то используется раскладка с Alt; <br />
* если не нажат Alt, но нажат Shift, то используется раскладка с Shift; <br />
* если не нажаты Alt и Shift, но нажат Ctrl, то используется нормальная раскладка, после чего из кода вычитается 0x60;<br />
* если не нажата ни одна из управляющих клавиш, то используется нормальная раскладка.<br />
* Получить раскладки и идентификатор страны можно с помощью подфункции 2 функции 26.<br />
* Идентификатор страны - глобальная системная переменная, которая самим ядром не используется; однако приложение @panel отображает соответствующую текущей стране иконку.<br />
* Приложение @panel переключает раскладки по запросу пользователя.<br />
<br />
=== Подфункция 3 - установить базу CD. ===<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 3 - номер подфункции<br />
* ecx = база CD: 1=IDE0, 2=IDE1, 3=IDE2, 4=IDE3<br />
<br />
Возвращаемое значение:<br />
* eax = 0<br />
Замечания:<br />
* База CD используется функцией 24.<br />
* Получить установленную базу CD можно вызовом подфункции 3 функции 26.<br />
<br />
=== Подфункция 4 - установить базовый порт Sound Blaster. ===<br />
<br />
Удалена<br />
<br />
=== Подфункция 5 - установить язык системы. ===<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 5 - номер подфункции<br />
* ecx = язык системы (1=eng, 2=fi, 3=ger, 4=rus)<br />
<br />
Возвращаемое значение:<br />
* eax = 0<br />
<br />
Замечания:<br />
* Язык системы - глобальная системная переменная, никак не используемая самим ядром, однако приложение @panel рисует соответствующую иконку.<br />
* Проверок на корректность не делается, поскольку ядро эту переменную не использует.<br />
* Получить язык системы можно вызовом подфункции 5 функции 26.<br />
<br />
<br />
=== Подфункция 7 - установить базу HD. ===<br />
<br />
<big>'''Внимание:''' Эта подфункция будет [http://board.kolibrios.org/viewtopic.php?f=35&t=1854 удалена] в следующих версиях системы</big><br />
<br />
База HD нужна для определения, на какой жёсткий диск писать, при спользовании устаревшего синтаксиса /HD в устаревшей функции 58;<br />
при использовании современного синтаксиса /HD0,/HD1,/HD2,/HD3 база устанавливается автоматически.<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 7 - номер подфункции<br />
* ecx = база HD: 1=IDE0, 2=IDE1, 3=IDE2, 4=IDE3<br />
<br />
Возвращаемое значение:<br />
* eax = 0<br />
<br />
Замечания:<br />
* Любое приложение в любой момент времени может изменить базу.<br />
* Не следует изменять базу, когда какое-нибудь приложение работает с жёстким диском. Если не хотите глюков системы.<br />
* Получить установленную базу можно вызовом подфункции 7 функции 26.<br />
* Следует также определить используемый раздел жёсткого диска подфункцией 8.<br />
<br />
=== Подфункция 8 - установить раздел HD. ===<br />
<br />
<big>'''Внимание:''' Эта подфункция будет [http://board.kolibrios.org/viewtopic.php?f=35&t=1854 удалена] в следующих версиях системы</big><br />
<br />
Раздел HD нужен для определения, на какой раздел жёсткого диска писать, при использовании устаревшего синтаксиса /HD в устаревшей функции 58; <br />
при использовании современного синтаксиса /HD0,/HD1,/HD2,/HD3 база и раздел устанавливаются автоматически.<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 8 - номер подфункции<br />
* ecx = раздел HD (считая с 1)<br />
<br />
Возвращаемое значение:<br />
* eax = 0<br />
<br />
Замечания:<br />
* Любое приложение в любой момент времени может изменить раздел.<br />
* Не следует изменять раздел, когда какое-нибудь приложение работает с жёстким диском. Если не хотите глюков системы.<br />
* Получить установленный раздел можно вызовом подфункции 8 функции 26.<br />
* Проверок на корректность не делается.<br />
* Узнать число разделов на жёстком диске можно вызовом подфункции 11 функции 18.<br />
* Следует также определить используемую базу жёсткого диска подфункцией 7.<br />
<br />
=== Подфункция 10 - установить канал DMA для звука. ===<br />
<br />
Удалена:<br />
<br />
=== Подфункция 11 - разрешить/запретить низкоуровневый доступ к HD. ===<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 11 - номер подфункции<br />
* ecx = 0/1 - запретить/разрешить<br />
<br />
Возвращаемое значение:<br />
* eax = 0<br />
<br />
Замечания:<br />
* Используется при LBA-чтении (подфункция 8 функции 58).<br />
* Текущая реализация использует только младший бит ecx.<br />
* Получить текущее состояние можно вызовом подфункции 11 функции 26.<br />
<br />
=== Подфункция 12 - разрешить/запретить низкоуровневый доступ к PCI. ===<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 12 - номер подфункции<br />
* ecx = 0/1 - запретить/разрешить<br />
<br />
Возвращаемое значение:<br />
* eax = 0<br />
<br />
Замечания:<br />
* Используется при работе с шиной PCI (функция 62).<br />
* Текущая реализация использует только младший бит ecx.<br />
* Получить текущее состояние можно вызовом подфункции 12 функции 26.<br />
<br />
=== Подфункция 13 === <br />
==== Подподфункция 1 - инициализировать + получить информацию о драйвере vmode.mdr. ====<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 13 - номер подфункции<br />
* ecx = 1 - номер функции драйвера<br />
* edx = указатель на буфер размера 512 байт<br />
<br />
Возвращаемое значение:<br />
* если драйвер не загружен (никогда не бывает в текущей реализации):<br />
** eax = -1<br />
** ebx, ecx разрушаются<br />
* если драйвер загружен:<br />
** eax = 'MDAZ' (в стиле fasm'а, т.е. 'M' - младший байт, 'Z' - старший) - сигнатура<br />
** ebx = текущая частота развёртки (в Гц)<br />
** ecx разрушается<br />
** буфер, на который указывает edx, заполнен<br />
<br />
Формат буфера:<br />
* +0: 32*byte: имя драйвера, "Trans VideoDriver" (без кавычек, дополнено пробелами)<br />
* +32 = +0x20: dword: версия драйвера (версия x.y кодируется как y*65536+x), для текущей реализации 1 (1.0)<br />
* +36 = +0x24: 7*dword: зарезервировано (0 в текущей реализации)<br />
* +64 = +0x40: 32*word: список поддерживаемых видеорежимов (каждое слово - номер видеорежима, после собственно списка идут нули)<br />
* +128 = +0x80: 32*(5*word): список поддерживаемых частот развёрток для видеорежимов: для каждого видеорежима, указанного в предыдущем поле, указано до 5 поддерживаемых частот (в неиспользуемых позициях записаны нули)<br />
<br />
Замечания:<br />
* Функция инициализирует драйвер (если он ещё не инициализирован) и должна вызываться первой, перед остальными (иначе они будут возвращать -1, ничего не делая).<br />
* В текущей реализации поддерживается только одна частота развёртки на видеорежим.<br />
<br />
==== Подподфункция 2 - получить информацию о текущем видеорежиме. ====<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 13 - номер подфункции<br />
* ecx = 2 - номер функции драйвера<br />
<br />
Возвращаемое значение:<br />
* eax = -1 - драйвер не загружен или не инициализирован;<br />
** ebx,ecx разрушаются<br />
* eax = [ширина]*65536 + [высота]<br />
* ebx = частота вертикальной развёртки (в Гц)<br />
* ecx = номер текущего видеорежима<br />
<br />
Замечания:<br />
* Драйвер предварительно должен быть инициализирован вызовом функции драйвера 1.<br />
* Если нужны только размеры экрана, целесообразней использовать функцию 14 с учётом того, что она возвращает размеры на 1 меньше.<br />
<br />
==== Подподфункция 3 - установить видеорежим. ====<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 13 - номер подфункции<br />
* ecx = 3 - номер функции драйвера<br />
* edx = [частота развёртки]*65536 + [номер видеорежима]<br />
<br />
Возвращаемое значение:<br />
* eax = -1 - драйвер не загружен, не инициализирован или произошла ошибка<br />
* eax = 0 - успешно<br />
* ebx, ecx разрушаются<br />
<br />
Замечания:<br />
* Драйвер предварительно должен быть инициализирован вызовом функции драйвера 1.<br />
* Номер видеорежима и частота должны быть в таблице, возвращаемой функцией драйвера 1.<br />
<br />
==== Подподфункция 4 - вернуться к начальному видеорежиму. ====<br />
<br />
Возвращает экран в видеорежим, установленный при загрузке системы.<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 13 - номер подфункции<br />
* ecx = 4 - номер функции драйвера<br />
<br />
Возвращаемое значение:<br />
* eax = -1 - драйвер не загружен или не инициализирован<br />
* eax = 0 - успешно<br />
* ebx, ecx разрушаются<br />
<br />
Замечания:<br />
* Драйвер предварительно должен быть инициализирован вызовом функции драйвера 1.<br />
<br />
==== Подподфункция 5 - увеличить/уменьшить размер видимой области монитора. ====<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 13 - номер подфункции<br />
* ecx = 5 - номер функции драйвера<br />
* edx = 0/1 - уменьшить/увеличить размер по горизонтали на одну позицию<br />
* edx = 2/3 - в текущей реализации не поддерживается; планируется как уменьшение/увеличение размера по вертикали на одну позицию<br />
<br />
Возвращаемое значение:<br />
* eax = -1 - драйвер не загружен или не инициализирован<br />
* eax = 0 - успешно<br />
* ebx, ecx разрушаются<br />
<br />
Замечания:<br />
* Драйвер предварительно должен быть инициализирован вызовом функции драйвера 1.<br />
* Функция влияет только на физический размер изображения на мониторе; логический размер (число пикселей) не меняется.<br />
<br />
<br />
{{System_functions}}<br />
[[Category: SysCalls]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=SysFn21/ru&diff=3353SysFn21/ru2011-09-02T09:52:02Z<p>Art zh: /* Подфункция 7 - установить базу HD. */</p>
<hr />
<div>'''Функция 21 - установка системных параметров'''<br />
<br />
----<br />
<br />
=== Подфункция 1 - установить базовый порт MPU MIDI. ===<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 1 - номер подфункции<br />
* ecx = номер базового порта<br />
Возвращаемое значение:<br />
* eax = 0 - успешно<br />
* eax = -1 - ошибочный номер порта<br />
Замечания:<br />
* Номер порта должен удовлетворять условиям 0x100<=ecx<=0xFFFF.<br />
* Установка базы нужна для работы функции 20.<br />
* Получить установленный базовый порт можно вызовом подфункции 1 функции 26.<br />
<br />
=== Подфункция 2 - установить раскладку клавиатуры. ===<br />
<br />
Раскладка клавиатуры используется для преобразования сканкодов, поступающих от клавиатуры, в ASCII-коды, считываемые функцией 2.<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 2 - номер подфункции<br />
* ecx = какую раскладку устанавливать:<br />
** 1 = нормальную<br />
** 2 = раскладку при нажатом Shift<br />
** 3 = раскладку при нажатом Alt<br />
* edx = указатель на раскладку - таблицу длиной 128 байт<br />
Или:<br />
* ecx = 9<br />
* dx = идентификатор страны (1=eng, 2=fi, 3=ger, 4=rus)<br />
<br />
Возвращаемое значение:<br />
* eax = 0 - успешно<br />
* eax = 1 - параметр задан неверно<br />
<br />
Замечания:<br />
* Если нажат Alt, то используется раскладка с Alt; <br />
* если не нажат Alt, но нажат Shift, то используется раскладка с Shift; <br />
* если не нажаты Alt и Shift, но нажат Ctrl, то используется нормальная раскладка, после чего из кода вычитается 0x60;<br />
* если не нажата ни одна из управляющих клавиш, то используется нормальная раскладка.<br />
* Получить раскладки и идентификатор страны можно с помощью подфункции 2 функции 26.<br />
* Идентификатор страны - глобальная системная переменная, которая самим ядром не используется; однако приложение @panel отображает соответствующую текущей стране иконку.<br />
* Приложение @panel переключает раскладки по запросу пользователя.<br />
<br />
=== Подфункция 3 - установить базу CD. ===<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 3 - номер подфункции<br />
* ecx = база CD: 1=IDE0, 2=IDE1, 3=IDE2, 4=IDE3<br />
<br />
Возвращаемое значение:<br />
* eax = 0<br />
Замечания:<br />
* База CD используется функцией 24.<br />
* Получить установленную базу CD можно вызовом подфункции 3 функции 26.<br />
<br />
=== Подфункция 4 - установить базовый порт Sound Blaster. ===<br />
<br />
Удалена<br />
<br />
=== Подфункция 5 - установить язык системы. ===<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 5 - номер подфункции<br />
* ecx = язык системы (1=eng, 2=fi, 3=ger, 4=rus)<br />
<br />
Возвращаемое значение:<br />
* eax = 0<br />
<br />
Замечания:<br />
* Язык системы - глобальная системная переменная, никак не используемая самим ядром, однако приложение @panel рисует соответствующую иконку.<br />
* Проверок на корректность не делается, поскольку ядро эту переменную не использует.<br />
* Получить язык системы можно вызовом подфункции 5 функции 26.<br />
<br />
<br />
=== Подфункция 7 - установить базу HD. ===<br />
<br />
<big>'''Внимание:''' Эта подфункция будет [http://board.kolibrios.org/viewtopic.php?f=35&t=1854 удалена] в следующих версиях системы</big><br />
<br />
База HD нужна для определения, на какой жёсткий диск писать, при спользовании устаревшего синтаксиса /HD в устаревшей функции 58;<br />
при использовании современного синтаксиса /HD0,/HD1,/HD2,/HD3 база устанавливается автоматически.<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 7 - номер подфункции<br />
* ecx = база HD: 1=IDE0, 2=IDE1, 3=IDE2, 4=IDE3<br />
<br />
Возвращаемое значение:<br />
* eax = 0<br />
<br />
Замечания:<br />
* Любое приложение в любой момент времени может изменить базу.<br />
* Не следует изменять базу, когда какое-нибудь приложение работает с жёстким диском. Если не хотите глюков системы.<br />
* Получить установленную базу можно вызовом подфункции 7 функции 26.<br />
* Следует также определить используемый раздел жёсткого диска подфункцией 8.<br />
<br />
=== Подфункция 8 - установить раздел HD. ===<br />
<br />
Раздел HD нужен для определения, на какой раздел жёсткого диска писать, при использовании устаревшего синтаксиса /HD в устаревшей функции 58; <br />
при использовании современного синтаксиса /HD0,/HD1,/HD2,/HD3 база и раздел устанавливаются автоматически.<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 8 - номер подфункции<br />
* ecx = раздел HD (считая с 1)<br />
<br />
Возвращаемое значение:<br />
* eax = 0<br />
<br />
Замечания:<br />
* Любое приложение в любой момент времени может изменить раздел.<br />
* Не следует изменять раздел, когда какое-нибудь приложение работает с жёстким диском. Если не хотите глюков системы.<br />
* Получить установленный раздел можно вызовом подфункции 8 функции 26.<br />
* Проверок на корректность не делается.<br />
* Узнать число разделов на жёстком диске можно вызовом подфункции 11 функции 18.<br />
* Следует также определить используемую базу жёсткого диска подфункцией 7.<br />
<br />
=== Подфункция 10 - установить канал DMA для звука. ===<br />
<br />
Удалена:<br />
<br />
=== Подфункция 11 - разрешить/запретить низкоуровневый доступ к HD. ===<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 11 - номер подфункции<br />
* ecx = 0/1 - запретить/разрешить<br />
<br />
Возвращаемое значение:<br />
* eax = 0<br />
<br />
Замечания:<br />
* Используется при LBA-чтении (подфункция 8 функции 58).<br />
* Текущая реализация использует только младший бит ecx.<br />
* Получить текущее состояние можно вызовом подфункции 11 функции 26.<br />
<br />
=== Подфункция 12 - разрешить/запретить низкоуровневый доступ к PCI. ===<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 12 - номер подфункции<br />
* ecx = 0/1 - запретить/разрешить<br />
<br />
Возвращаемое значение:<br />
* eax = 0<br />
<br />
Замечания:<br />
* Используется при работе с шиной PCI (функция 62).<br />
* Текущая реализация использует только младший бит ecx.<br />
* Получить текущее состояние можно вызовом подфункции 12 функции 26.<br />
<br />
=== Подфункция 13 === <br />
==== Подподфункция 1 - инициализировать + получить информацию о драйвере vmode.mdr. ====<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 13 - номер подфункции<br />
* ecx = 1 - номер функции драйвера<br />
* edx = указатель на буфер размера 512 байт<br />
<br />
Возвращаемое значение:<br />
* если драйвер не загружен (никогда не бывает в текущей реализации):<br />
** eax = -1<br />
** ebx, ecx разрушаются<br />
* если драйвер загружен:<br />
** eax = 'MDAZ' (в стиле fasm'а, т.е. 'M' - младший байт, 'Z' - старший) - сигнатура<br />
** ebx = текущая частота развёртки (в Гц)<br />
** ecx разрушается<br />
** буфер, на который указывает edx, заполнен<br />
<br />
Формат буфера:<br />
* +0: 32*byte: имя драйвера, "Trans VideoDriver" (без кавычек, дополнено пробелами)<br />
* +32 = +0x20: dword: версия драйвера (версия x.y кодируется как y*65536+x), для текущей реализации 1 (1.0)<br />
* +36 = +0x24: 7*dword: зарезервировано (0 в текущей реализации)<br />
* +64 = +0x40: 32*word: список поддерживаемых видеорежимов (каждое слово - номер видеорежима, после собственно списка идут нули)<br />
* +128 = +0x80: 32*(5*word): список поддерживаемых частот развёрток для видеорежимов: для каждого видеорежима, указанного в предыдущем поле, указано до 5 поддерживаемых частот (в неиспользуемых позициях записаны нули)<br />
<br />
Замечания:<br />
* Функция инициализирует драйвер (если он ещё не инициализирован) и должна вызываться первой, перед остальными (иначе они будут возвращать -1, ничего не делая).<br />
* В текущей реализации поддерживается только одна частота развёртки на видеорежим.<br />
<br />
==== Подподфункция 2 - получить информацию о текущем видеорежиме. ====<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 13 - номер подфункции<br />
* ecx = 2 - номер функции драйвера<br />
<br />
Возвращаемое значение:<br />
* eax = -1 - драйвер не загружен или не инициализирован;<br />
** ebx,ecx разрушаются<br />
* eax = [ширина]*65536 + [высота]<br />
* ebx = частота вертикальной развёртки (в Гц)<br />
* ecx = номер текущего видеорежима<br />
<br />
Замечания:<br />
* Драйвер предварительно должен быть инициализирован вызовом функции драйвера 1.<br />
* Если нужны только размеры экрана, целесообразней использовать функцию 14 с учётом того, что она возвращает размеры на 1 меньше.<br />
<br />
==== Подподфункция 3 - установить видеорежим. ====<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 13 - номер подфункции<br />
* ecx = 3 - номер функции драйвера<br />
* edx = [частота развёртки]*65536 + [номер видеорежима]<br />
<br />
Возвращаемое значение:<br />
* eax = -1 - драйвер не загружен, не инициализирован или произошла ошибка<br />
* eax = 0 - успешно<br />
* ebx, ecx разрушаются<br />
<br />
Замечания:<br />
* Драйвер предварительно должен быть инициализирован вызовом функции драйвера 1.<br />
* Номер видеорежима и частота должны быть в таблице, возвращаемой функцией драйвера 1.<br />
<br />
==== Подподфункция 4 - вернуться к начальному видеорежиму. ====<br />
<br />
Возвращает экран в видеорежим, установленный при загрузке системы.<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 13 - номер подфункции<br />
* ecx = 4 - номер функции драйвера<br />
<br />
Возвращаемое значение:<br />
* eax = -1 - драйвер не загружен или не инициализирован<br />
* eax = 0 - успешно<br />
* ebx, ecx разрушаются<br />
<br />
Замечания:<br />
* Драйвер предварительно должен быть инициализирован вызовом функции драйвера 1.<br />
<br />
==== Подподфункция 5 - увеличить/уменьшить размер видимой области монитора. ====<br />
<br />
Параметры:<br />
* eax = 21 - номер функции<br />
* ebx = 13 - номер подфункции<br />
* ecx = 5 - номер функции драйвера<br />
* edx = 0/1 - уменьшить/увеличить размер по горизонтали на одну позицию<br />
* edx = 2/3 - в текущей реализации не поддерживается; планируется как уменьшение/увеличение размера по вертикали на одну позицию<br />
<br />
Возвращаемое значение:<br />
* eax = -1 - драйвер не загружен или не инициализирован<br />
* eax = 0 - успешно<br />
* ebx, ecx разрушаются<br />
<br />
Замечания:<br />
* Драйвер предварительно должен быть инициализирован вызовом функции драйвера 1.<br />
* Функция влияет только на физический размер изображения на мониторе; логический размер (число пикселей) не меняется.<br />
<br />
<br />
{{System_functions}}<br />
[[Category: SysCalls]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=SysFn18/ru&diff=3351SysFn18/ru2011-09-02T09:48:26Z<p>Art zh: /* Подфункция 11 - предупреждение */</p>
<hr />
<div>'''Функция 18''' - <br />
----<br />
=== Подфункция 2 - завершить процесс/поток по слоту. ===<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 2 - номер подфункции<br />
* ecx = номер слота процесса/потока<br />
Возвращаемое значение:<br />
* функция не возвращает значения<br />
Замечания:<br />
* Нельзя завершить поток операционной системы OS/IDLE (номер слота 1), можно завершить любой обычный поток/процесс.<br />
* Смотри также подфункцию 18 - завершение процесса/потока с заданным идентификатором.<br />
<br />
=== Подфункция 3 - сделать активным окно заданного потока. ===<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 3 - номер подфункции<br />
* ecx = номер слота потока<br />
Возвращаемое значение:<br />
* функция не возвращает значения<br />
Замечания:<br />
* При указании корректного, но несуществующего слота активизируется какое-то окно.<br />
* Узнать, какое окно является активным, можно вызовом подфункции 7.<br />
<br />
=== Подфункция 4 - получить счётчик пустых тактов в секунду. ===<br />
<br />
Под пустыми тактами понимается время, в которое процессор простаивает в ожидании прерывания (в инструкции hlt).<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 4 - номер подфункции<br />
Возвращаемое значение:<br />
* eax = значение счётчика пустых тактов в секунду<br />
<br />
=== Подфункция 5 - получить тактовую частоту. ===<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 5 - номер подфункции<br />
Возвращаемое значение:<br />
* eax = тактовая частота (по модулю 2^32 тактов = 4ГГц)<br />
<br />
=== Подфункция 6 - сохранить рамдиск в файл на жёстком диске. ===<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 6 - номер подфункции<br />
* ecx = указатель на строку с полным именем файла (например, "/hd0/1/kolibri/kolibri.img")<br />
Возвращаемое значение:<br />
* eax = 0 - успешно<br />
* иначе eax = код ошибки файловой системы<br />
Замечания:<br />
* Все папки в указанном пути должны существовать, иначе вернётся значение 5, "файл не найден".<br />
<br />
=== Подфункция 7 - получить номер активного окна. ===<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 7 - номер подфункции<br />
Возвращаемое значение:<br />
* eax = номер активного окна (номер слота потока, окно которого активно)<br />
Замечания:<br />
* Активное окно находится вверху оконного стэка и получает сообщения обо всём вводе с клавиатуры.<br />
* Сделать окно активным можно вызовом подфункции 3.<br />
<br />
=== Подфункция 8 - отключить/разрешить звук спикера. ===<br />
<br />
При отключённом звуке вызовы подфункции 55 функции 55 игнорируются.<br />
При включённом - направляются на встроенный спикер.<br />
<br />
=== Подподфункция 1 - получить состояние. ===<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 8 - номер подфункции<br />
* ecx = 1 - номер подподфункции<br />
Возвращаемое значение:<br />
* eax = 0 - звук спикера разрешён; 1 - запрещён<br />
<br />
=== Подподфункция 2 - переключить состояние. ===<br />
Переключает состояния разрешения/запрещения.<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 8 - номер подфункции<br />
* ecx = 2 - номер подподфункции<br />
Возвращаемое значение:<br />
* функция не возвращает значения<br />
<br />
=== Подфункция 9 - завершение работы системы ===<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 9 - номер подфункции<br />
* ecx = параметр:<br />
** 2 = выключить компьютер<br />
** 3 = перезагрузить компьютер<br />
** 4 = перезапустить ядро из файла kernel.mnt на рамдиске<br />
Возвращаемое значение:<br />
* при неверном ecx регистры не меняются (т.е. eax=18)<br />
* при правильном вызове всегда возвращается признак успеха eax=0<br />
Замечания:<br />
* Не следует полагаться на возвращаемое значение при неверном вызове, оно может измениться в последующих версиях ядра.<br />
<br />
=== Подфункция 10 - свернуть окно приложения. ===<br />
<br />
Сворачивает собственное окно.<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 10 - номер подфункции<br />
Возвращаемое значение:<br />
* функция не возвращает значения<br />
Замечания:<br />
* Минимизированное окно с точки зрения функции 9 сохраняет положение и размеры.<br />
* Восстановление окна приложения происходит при активизировании подфункцией 3.<br />
* Обычно нет необходимости явно сворачивать/разворачивать своё окно: сворачивание окна осуществляется системой при нажатии на кнопку минимизации (которая для окон со скином определяется автоматически функцией 0, для окон без скина её можно определить функцией 8), восстановление - приложением @panel.<br />
<br />
=== Подфункция 11 - получить информацию о дисковой подсистеме. ===<br />
<big>'''Внимание:''' Эта подфункция будет [http://board.kolibrios.org/viewtopic.php?f=35&t=1854 удалена] в следующих версиях системы</big><br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 11 - номер подфункции<br />
* ecx = тип таблицы:<br />
** 1 = короткая версия, 10 байт<br />
** 2 = полная версия, 65536 байт<br />
* edx = указатель на буфер (в приложении) для таблицы<br />
<br />
Возвращаемое значение:<br />
* функция не возвращает значения<br />
<br />
Формат таблицы: '''короткая версия''':<br />
* +0: byte: информация о НГМД (дисководах для дискет), AAAABBBB, где AAAA задаёт тип первого дисковода, BBBB - второго согласно следующему списку:<br />
** 0 = нет дисковода<br />
** 1 = 360Kb, 5.25''<br />
** 2 = 1.2Mb, 5.25''<br />
** 3 = 720Kb, 3.5''<br />
** 4 = 1.44Mb, 3.5''<br />
** 5 = 2.88Mb, 3.5'' (такие дискеты сейчас уже не используются)<br />
** Например, для стандартной конфигурации из одного 1.44-дисковода здесь будет 40h, а для случая 1.2Mb на A: и 1.44Mb на B: значение оказывается 24h.<br />
* +1: byte: информация о жёстких дисках и CD-приводах, AABBCCDD, где AA соответствует контроллеру IDE0, ..., DD - IDE3:<br />
** 0 = устройство отсутствует<br />
** 1 = жёсткий диск<br />
** 2 = CD-привод<br />
** Например, в случае HD на IDE0 и CD на IDE2 здесь будет 48h.<br />
* +2: 4 db: число найденных разделов на жёстких дисках с соответственно IDE0,...,IDE3. При отсутствии жёсткого диска на IDEx соответствующий байт нулевой, при наличии показывает число распознанных разделов, которых может и не быть (если носитель не отформатирован или если файловая система не поддерживается). В текущей версии ядра для жёстких дисков поддерживаются только FAT16, FAT32 и NTFS.<br />
* +6: 4 db: зарезервировано<br />
<br />
Формат таблицы: '''полная версия''':<br />
* +0: 10 db: такие же, как и в короткой версии<br />
* +10: 100 db: данные для первого раздела<br />
* +110: 100 db: данные для второго раздела<br />
* ...<br />
* +10+100*(n-1): 100 db: данные для последнего раздела<br />
* Разделы расположены в следующем порядке: сначала последовательно все pаспознанные разделы на HD на IDE0 (если есть), затем на HD на IDE1 (если есть) и т.д. до IDE3.<br />
<br />
Формат информации о разделе:<br />
* +0: dword: начальный физический сектор раздела<br />
* +4: dword: последний физический сектор раздела (принадлежит разделу)<br />
* +8: byte: тип файловой системы: 16=FAT16, 32=FAT32, 1=NTFS, '''?=EXT2'''<br />
* формат дальнейших данных зависит от файловой системы, может меняться с изменениями в ядре и поэтому не описывается<br />
<br />
Замечания:<br />
* Короткая таблица может быть использована для получения информации об имеющихся устройствах.<br />
<br />
=== Подфункция 13 - получить версию ядра. ===<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 13 - номер подфункции<br />
* ecx = указатель на буфер (не менее 16 байт), куда будет помещена информация<br />
<br />
Возвращаемое значение:<br />
* функция не возвращает значения<br />
<br />
Структура буфера:<br />
db a,b,c,d для версии a.b.c.d<br />
db 0: зарезервировано<br />
dd REV - номер svn-ревизии ядра<br />
<br />
Для ядра Kolibri 0.7.7.0+:<br />
db 0,7,7,0<br />
db 0<br />
dd 1675<br />
<br />
=== Подфункция 14 - ожидать начала обратного хода луча развёртки монитора. ===<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 14 - номер подфункции<br />
<br />
Возвращаемое значение:<br />
* eax = 0 как признак успеха<br />
<br />
Замечания:<br />
* Функция предназначена исключительно для активных высокопроизводительных графических приложений; используется для плавного вывода графики.<br />
<br />
=== Подфункция 15 - поместить курсор мыши в центр экрана. ===<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 15 - номер подфункции<br />
<br />
Возвращаемое значение:<br />
* eax = 0 как признак успеха<br />
<br />
=== Подфункция 16 - Получить размер свободной оперативной памяти. ===<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 16 - номер подфункции<br />
<br />
Возвращаемое значение:<br />
* eax = размер свободной памяти в килобайтах<br />
<br />
=== Подфункция 17 - получить размер имеющейся оперативной памяти. ===<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 17 - номер подфункции<br />
<br />
Возвращаемое значение:<br />
* eax = общий размер имеющейся памяти в килобайтах<br />
<br />
=== Подфункция 18 - завершить процесс/поток по идентификатору. ===<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 18 - номер подфункции<br />
* ecx = идентификатор процесса/потока (PID/TID)<br />
<br />
Возвращаемое значение:<br />
* eax = 0 - успешно<br />
* eax = -1 - ошибка (процесс не найден или является системным)<br />
<br />
Замечания:<br />
* Нельзя завершить поток операционной системы OS/IDLE (номер слота 1), можно завершить любой обычный поток/процесс.<br />
* Смотри также подфункцию 2 - завершение процесса/потока по заданному слоту.<br />
<br />
=== Подфункция 19 - получить/установить настройки мыши. ===<br />
<br />
==== Подподфункция 0 - получить скорость мыши. ====<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 19 - номер подфункции<br />
* ecx = 0 - номер подподфункции<br />
<br />
Возвращаемое значение:<br />
* eax = текущая скорость мыши<br />
<br />
==== Подподфункция 1 - установить скорость мыши. ====<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 19 - номер подфункции<br />
* ecx = 1 - номер подподфункции<br />
* edx = новое значение скорости<br />
<br />
Возвращаемое значение:<br />
* функция не возвращает значения<br />
<br />
==== Подподфункция 2 - получить задержку мыши. ====<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 19 - номер подфункции<br />
* ecx = 2 - номер подподфункции<br />
<br />
Возвращаемое значение:<br />
* eax = текущая задержка мыши<br />
<br />
==== Подподфункция 3 - установить задержку мыши. ====<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 19 - номер подфункции<br />
* ecx = 3 - номер подподфункции<br />
* edx = новое значение задержки мыши<br />
<br />
Возвращаемое значение:<br />
* функция не возвращает значения<br />
<br />
==== Подподфункция 4 - установить положение курсора мыши. ====<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 19 - номер подфункции<br />
* ecx = 4 - номер подподфункции<br />
* edx = [координата по оси x]*65536 + [координата по оси y]<br />
<br />
Возвращаемое значение:<br />
* функция не возвращает значения<br />
<br />
Замечания:<br />
* Подподфункция 4 не проверяет переданное значение. Перед вызовом необходимо узнать текущее разрешение экрана (подфункцией 14) и проверить, что устанавливаемое положение не выходит за пределы экрана.<br />
<br />
==== Подподфункция 5 - симулировать состояние клавиш мыши. ====<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 19 - номер подфункции<br />
* ecx = 5 - номер подподфункции<br />
* edx = информация о эмулируемом состоянии кнопок мыши: (соответствует возвращаемому значению подфункции 2 функции 37)<br />
** бит 0 установлен = левая кнопка нажата<br />
** бит 1 установлен = правая кнопка нажата<br />
** бит 2 установлен = средняя кнопка нажата<br />
** бит 3 установлен = 4-я кнопка нажата<br />
** бит 4 установлен = 5-я кнопка нажата<br />
<br />
Возвращаемое значение:<br />
* функция не возвращает значения<br />
<br />
Замечания:<br />
* Рекомендуемая скорость мыши (в подподфункции 1) от 1 до 9. Устанавливаемая величина не проверяется кодом ядра, поэтому используйте осторожно, при некорректном значении курсор может "замёрзнуть". Скорость мыши можно регулировать в приложении SETUP.<br />
* Рекомендуемая величина задержки (в подподфункции 3) = 10. Меньшие значения не обрабатываются COM-мышами. При очень больших значениях невозможно передвижение мыши на 1 пиксель и курсор будет прыгать на величину установленной скорости (подподфункция 1). Устанавливаемая величина не проверяется кодом ядра. Величину задержки можно менять в приложении SETUP.<br />
<br />
=== Подфункция 20 - получить информацию об оперативной памяти. ===<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 20 - номер подфункции<br />
* ecx = указатель на буфер для информации (36 байт)<br />
<br />
Возвращаемое значение:<br />
* eax = общий размер имеющейся оперативной памяти в байтах или -1 в случае ошибки<br />
* буфер, на который указывает ecx, содержит следующую информацию:<br />
** +0: dword: общий размер имеющейся оперативной памяти в страницах<br />
** +4: dword: размер свободной оперативной памяти в страницах<br />
** +8: dword: число страничных ошибок (исключений #PF) в приложениях<br />
** +12: dword: размер кучи ядра в байтах<br />
** +16: dword: размер свободной памяти в куче ядра в байтах<br />
** +20: dword: общее количество блоков памяти в куче ядра<br />
** +24: dword: количество свободных блоков памяти в куче ядра<br />
** +28: dword: размер наибольшего свободного блока в куче ядра (зарезервировано)<br />
** +32: dword: размер наибольшего выделенного блока в куче ядра (зарезервировано)<br />
<br />
=== Подфункция 21 - получить номер слота процесса/потока по идентификатору. ===<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 21 - номер подфункции<br />
* ecx = идентификатор процесса/потока (PID/TID)<br />
<br />
Возвращаемое значение:<br />
* eax = 0 - ошибка (неверный идентификатор)<br />
* иначе eax = номер слота<br />
<br />
=== Подфункция 22 - операции с окном другого процесса/потока. ===<br />
<br />
Параметры:<br />
* eax = 18 - номер функции<br />
* ebx = 22 - номер подфункции<br />
* ecx = тип операции:<br />
** 0 = минимизация окна, поток задан номером слота<br />
** 1 = минимизация окна, поток задан идентификатором<br />
** 2 = восстановление окна, поток задан номером слота<br />
** 3 = восстановление окна, поток задан идентификатором<br />
* edx = параметр операции (номер слота или PID/TID)<br />
<br />
Возвращаемое значение:<br />
* eax = 0 - успешно<br />
* eax = -1 - ошибка (неправильный параметр)<br />
<br />
Замечания:<br />
* Поток может свернуть своё окно вызовом подфункции 10.<br />
* Восстановление окна с одновременной активизацией осуществляется подфункцией 3 (принимающей номер слота).<br />
<br />
<br />
{{System_functions}}<br />
[[Category: SysCalls]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Embedded_Platforms/ru&diff=3263Embedded Platforms/ru2011-04-20T20:51:45Z<p>Art zh: </p>
<hr />
<div>{| class="wikitable" border="1" <br />
|- <br />
! board<br />
! FI853<br />
! CV700<br />
! WF945GSE3<br />
! PCM4153<br />
! LP-170<br />
! EMX780E<br />
! eBoxGC85<br />
! VDX6318<br />
! VDX-DIP<br />
! AF2S1A<br />
! D3003s [http://wwwd.amd.com/catalog/SalesCat.nsf/doclookupweb/ACAC4677AE14B4F18625781D004AC384?OpenDocument&id=Fujitsu~D3003-S]<br />
|- | align="center" <br />
| mass, g<br />
| ? <br />
| ?<br />
| 650 <br />
| 162<br />
| 88<br />
| 400<br />
| 500<br />
| 63<br />
| 23<br />
| ?<br />
| 400<br />
|- | align="center" <br />
| dims, mm<br />
| 170х170<br />
| 200х150<br />
| 146х102<br />
| 115х96<br />
| 100x72<br />
| 170x170<br />
| 115x115x35<br />
| 100x66<br />
| 70x45<br />
| 120x120<br />
| 170x170<br />
|- | align="center"<br />
| temp. range<br />
| -<br />
| -<br />
| -<br />
| +<br />
| -<br />
| - <br />
| -<br />
| +<br />
| +<br />
| -<br />
| +<br />
|- | align="center"<br />
| vibro props<br />
| - <br />
| -<br />
| -<br />
| +<br />
| -<br />
| -<br />
| ?<br />
| ++<br />
| ++<br />
| -<br />
| +<br />
|- | align="center"<br />
| питание<br />
| ATX<br />
| 12V<br />
| 5V<br />
| 5V<br />
| 12V<br />
| ATX<br />
| 8..15V<br />
| 5V<br />
| 5V<br />
| 12V<br />
| 19..24V<br />
|- | align="center"<br />
| power<br />
| ? <br />
| ?<br />
| 12W<br />
| 7W<br />
| ?<br />
| 35W<br />
| ?<br />
| 3.7W<br />
| 1.6W<br />
| ?<br />
| 20W<br />
|- | align="center"<br />
| heat dissipation <br />
| -<br />
| -<br />
| -<br />
| +<br />
| -<br />
| --<br />
| +<br />
| +<br />
| +<br />
| --<br />
| +<br />
|- | align="center"<br />
| known chipset<br />
| +<br />
| +<br />
| ++<br />
| ++<br />
| +<br />
| +<br />
| ++<br />
| +<br />
| +<br />
| -<br />
| -<br />
|- | align="center"<br />
| open docs/code <br />
| ++<br />
| +<br />
| ++<br />
| ++<br />
| ++<br />
| +<br />
| -<br />
| -<br />
| -<br />
| -<br />
| +<br />
|- | align="center"<br />
| on-board CPU<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| -<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
|- | align="center"<br />
| on-board RAM<br />
| -<br />
| -<br />
| -<br />
| +<br />
| -<br />
| -<br />
| +<br />
| +<br />
| +<br />
| -<br />
| -<br />
|- | align="center"<br />
| CF sockets<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| 0<br />
| 0<br />
| 0<br />
| 2<br />
|- | align="center"<br />
| on-board disks<br />
| 0<br />
| 0<br />
| 0<br />
| 1<br />
| 0<br />
| 0<br />
| 0<br />
| 2<br />
| 1<br />
| ?<br />
| 0<br />
|- | align="center"<br />
| LPT ports<br />
| -<br />
| 1<br />
| -<br />
| 1<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
|- | align="center"<br />
| DIO lines<br />
| 8<br />
| -<br />
| 8<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| ?<br />
| -<br />
|- | align="center"<br />
| GPIO pins<br />
| -<br />
| -<br />
| -<br />
| 8<br />
| -<br />
| 8<br />
| 24<br />
| 32<br />
| 32<br />
| ?<br />
| 8<br />
|- | align="center"<br />
| Bus<br />
| -<br />
| -<br />
| PC-104<br />
| PC-104+<br />
| -<br />
| -<br />
| -<br />
| ISA<br />
| ISA<br />
| -<br />
| PCI<br />
|- | align="center"<br />
| RS-485<br />
| -<br />
| -<br />
| 1<br />
| 1<br />
| -<br />
| -<br />
| 1<br />
| 1<br />
| -<br />
| -<br />
| -<br />
|- | align="center"<br />
| RS-232<br />
| 1<br />
| 2<br />
| 3<br />
| 3<br />
| 2<br />
| 4<br />
| 2<br />
| 3<br />
| 5 (TTL)<br />
| 2<br />
| 2<br />
|- | align="center"<br />
| IRDA<br />
| 1<br />
| 1<br />
| 1<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
|- | align="center"<br />
| Ethernet<br />
| 2<br />
| 3<br />
| 1<br />
| 2<br />
| 1<br />
| 2<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| 2<br />
|- | align="center"<br />
| USB<br />
| 4<br />
| 7<br />
| 4<br />
| 4<br />
| 4<br />
| 8<br />
| 2<br />
| 3<br />
| 4<br />
| 4<br />
| 4+3<br />
|- | align="center"<br />
| FireWire<br />
| 1<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| ?<br />
| -<br />
|- | align="center"<br />
| HDMI<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| 1<br />
| -<br />
| -<br />
| -<br />
| 2<br />
| 1<br />
|- | align="center"<br />
| ROM-BIOS space<br />
| +<br />
| +<br />
| -<br />
| +<br />
| +<br />
| -<br />
| -<br />
| -<br />
| -<br />
| ?<br />
| +<br />
|- | align="center"<br />
| Watchdog Tmr<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| + <br />
| +<br />
|- | align="center"<br />
| Audio<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| -<br />
| +<br />
| +<br />
| +<br />
| +<br />
|- | align="center"<br />
| LVDS<br />
| 1<br />
| ?<br />
| 1<br />
| LCD<br />
| 1<br />
| 2<br />
| 0<br />
| 1<br />
| 0<br />
| 1<br />
| 2<br />
|- | align="center"<br />
| PCI Express<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| x16<br />
| -<br />
| -<br />
| -<br />
| x1<br />
| x1<br />
|}<br />
<br />
[[Category:Аппаратное обеспечение]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Embedded_Platforms/ru&diff=3262Embedded Platforms/ru2011-04-19T11:45:03Z<p>Art zh: </p>
<hr />
<div>{| class="wikitable" border="1" <br />
|- <br />
! board<br />
! FI853<br />
! CV700<br />
! WF945GSE3<br />
! PCM4153<br />
! LP-170<br />
! EMX780E<br />
! eBoxGC85<br />
! VDX6318<br />
! VDX-DIP<br />
! AF2S1A<br />
|- | align="center" <br />
| mass, g<br />
| ? <br />
| ?<br />
| 650 <br />
| 162<br />
| 88<br />
| 400<br />
| 500<br />
| 63<br />
| 23<br />
| ?<br />
|- | align="center" <br />
| dims, mm<br />
| 170х170<br />
| 200х150<br />
| 146х102<br />
| 115х96<br />
| 100x72<br />
| 170x170<br />
| 115x115x35<br />
| 100x66<br />
| 70x45<br />
| 120x120<br />
|- | align="center"<br />
| temp. range<br />
| -<br />
| -<br />
| -<br />
| +<br />
| -<br />
| - <br />
| -<br />
| +<br />
| +<br />
| -<br />
|- | align="center"<br />
| vibro props<br />
| - <br />
| -<br />
| -<br />
| +<br />
| -<br />
| -<br />
| ?<br />
| ++<br />
| ++<br />
| -<br />
|- | align="center"<br />
| питание<br />
| ATX<br />
| 12V<br />
| 5V<br />
| 5V<br />
| 12V<br />
| ATX<br />
| 8..15V<br />
| 5V<br />
| 5V<br />
| 12V<br />
|- | align="center"<br />
| power<br />
| ? <br />
| ?<br />
| 12W<br />
| 7W<br />
| ?<br />
| 35W<br />
| ?<br />
| 3.7W<br />
| 1.6W<br />
| ?<br />
|- | align="center"<br />
| heat dissipation <br />
| -<br />
| -<br />
| -<br />
| +<br />
| -<br />
| --<br />
| +<br />
| +<br />
| +<br />
| --<br />
|- | align="center"<br />
| known chipset<br />
| +<br />
| +<br />
| ++<br />
| ++<br />
| +<br />
| +<br />
| ++<br />
| +<br />
| +<br />
| New!<br />
|- | align="center"<br />
| open docs/code <br />
| ++<br />
| +<br />
| ++<br />
| ++<br />
| ++<br />
| +<br />
| -<br />
| -<br />
| -<br />
| -<br />
|- | align="center"<br />
| on-board CPU<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| -<br />
| +<br />
| +<br />
| +<br />
| +<br />
|- | align="center"<br />
| on-board RAM<br />
| -<br />
| -<br />
| -<br />
| +<br />
| -<br />
| -<br />
| +<br />
| +<br />
| +<br />
| -<br />
|- | align="center"<br />
| CF sockets<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| 0<br />
| 0<br />
| 0<br />
|- | align="center"<br />
| on-board disks<br />
| 0<br />
| 0<br />
| 0<br />
| 1<br />
| 0<br />
| 0<br />
| 0<br />
| 2<br />
| 1<br />
| ?<br />
|- | align="center"<br />
| LPT ports<br />
| -<br />
| 1<br />
| -<br />
| 1<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
|- | align="center"<br />
| DIO lines<br />
| 8<br />
| -<br />
| 8<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| ?<br />
|- | align="center"<br />
| GPIO pins<br />
| -<br />
| -<br />
| -<br />
| 8<br />
| -<br />
| 8<br />
| 24<br />
| 32<br />
| 32<br />
| ?<br />
|- | align="center"<br />
| Comb. bus<br />
| -<br />
| -<br />
| PC-104<br />
| PC-104+<br />
| -<br />
| -<br />
| -<br />
| ISA<br />
| ISA<br />
| -<br />
|- | align="center"<br />
| RS-485<br />
| -<br />
| -<br />
| 1<br />
| 1<br />
| -<br />
| -<br />
| 1<br />
| 1<br />
| -<br />
| -<br />
|- | align="center"<br />
| RS-232<br />
| 1<br />
| 2<br />
| 3<br />
| 3<br />
| 2<br />
| 4<br />
| 2<br />
| 3<br />
| 5 (TTL)<br />
| 2<br />
|- | align="center"<br />
| IRDA<br />
| 1<br />
| 1<br />
| 1<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
|- | align="center"<br />
| Ethernet<br />
| 2<br />
| 3<br />
| 1<br />
| 2<br />
| 1<br />
| 2<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
|- | align="center"<br />
| USB<br />
| 4<br />
| 7<br />
| 4<br />
| 4<br />
| 4<br />
| 8<br />
| 2<br />
| 3<br />
| 4<br />
| 4<br />
|- | align="center"<br />
| FireWire<br />
| 1<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| ?<br />
|- | align="center"<br />
| HDMI<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| 1<br />
| -<br />
| -<br />
| -<br />
| 2<br />
|- | align="center"<br />
| ROM-BIOS space<br />
| +<br />
| +<br />
| -<br />
| +<br />
| +<br />
| -<br />
| -<br />
| -<br />
| -<br />
| ?<br />
|- | align="center"<br />
| Watchdog Tmr<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| + <br />
|- | align="center"<br />
| Audio<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| -<br />
| +<br />
| +<br />
| +<br />
|- | align="center"<br />
| LVDS<br />
| 1<br />
| ?<br />
| 1<br />
| LCD<br />
| 1<br />
| 2<br />
| 0<br />
| 1<br />
| 0<br />
| 1<br />
|- | align="center"<br />
| PCI Express<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| x16<br />
| -<br />
| -<br />
| -<br />
| x1<br />
|}<br />
<br />
[[Category:Аппаратное обеспечение]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Embedded_Platforms/ru&diff=3261Embedded Platforms/ru2011-04-19T11:09:39Z<p>Art zh: </p>
<hr />
<div>{| class="wikitable" border="1" <br />
|- <br />
! board<br />
! FI853<br />
! CV700<br />
! WF945GSE3<br />
! PCM4153<br />
! LP-170<br />
! EMX780E<br />
! eBoxGC85<br />
! VDX6318<br />
! VDX-DIP<br />
! AF2S1A<br />
|- | align="center" <br />
| mass, g<br />
| ? <br />
| ?<br />
| 650 <br />
| 162<br />
| 88<br />
| 400<br />
| 500<br />
| 63<br />
| 23<br />
| ?<br />
|- | align="center" <br />
| dims, mm<br />
| 170х170<br />
| 200х150<br />
| 146х102<br />
| 115х96<br />
| 100x72<br />
| 170x170<br />
| 115x115x35<br />
| 100x66<br />
| 70x45<br />
| 120x120<br />
|- | align="center"<br />
| temp. range<br />
| -<br />
| -<br />
| -<br />
| +<br />
| -<br />
| - <br />
| -<br />
| +<br />
| +<br />
| -<br />
|- | align="center"<br />
| vibro props<br />
| - <br />
| -<br />
| -<br />
| +<br />
| -<br />
| -<br />
| ?<br />
| ++<br />
| ++<br />
| -<br />
|- | align="center"<br />
| питание<br />
| ATX<br />
| 12V<br />
| 5V<br />
| 5V<br />
| 12V<br />
| ATX<br />
| 8..15V<br />
| 5V<br />
| 5V<br />
| 12V<br />
|- | align="center"<br />
| power<br />
| ? <br />
| ?<br />
| 12W<br />
| 7W<br />
| ?<br />
| 35W<br />
| ?<br />
| 3.7W<br />
| 1.6W<br />
| ?<br />
|- | align="center"<br />
| heat dissipation <br />
| -<br />
| -<br />
| -<br />
| +<br />
| -<br />
| --<br />
| +<br />
| +<br />
| +<br />
| --<br />
|- | align="center"<br />
| known chipset<br />
| +<br />
| +<br />
| ++<br />
| ++<br />
| +<br />
| +<br />
| ++<br />
| +<br />
| +<br />
| New!<br />
|- | align="center"<br />
| open docs/code <br />
| ++<br />
| +<br />
| ++<br />
| ++<br />
| ++<br />
| +<br />
| -<br />
| -<br />
| -<br />
| -<br />
|- | align="center"<br />
| on-board CPU<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| -<br />
| +<br />
| +<br />
| +<br />
| +<br />
|- | align="center"<br />
| on-board RAM<br />
| -<br />
| -<br />
| -<br />
| +<br />
| -<br />
| -<br />
| +<br />
| +<br />
| +<br />
| -<br />
|- | align="center"<br />
| CF sockets<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| 0<br />
| 0<br />
| 0<br />
|- | align="center"<br />
| on-board disks<br />
| 0<br />
| 0<br />
| 0<br />
| 1<br />
| 0<br />
| 0<br />
| 0<br />
| 2<br />
| 1<br />
| ?<br />
|- | align="center"<br />
| LPT ports<br />
| -<br />
| 1<br />
| -<br />
| 1<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
|- | align="center"<br />
| DIO lines<br />
| 8<br />
| -<br />
| 8<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| ?<br />
|- | align="center"<br />
| GPIO pins<br />
| -<br />
| -<br />
| -<br />
| 8<br />
| -<br />
| 8<br />
| 24<br />
| 32<br />
| 32<br />
| ?<br />
|- | align="center"<br />
| Comb. bus<br />
| -<br />
| -<br />
| PC-104<br />
| PC-104+<br />
| -<br />
| -<br />
| -<br />
| ISA<br />
| ISA<br />
| -<br />
|- | align="center"<br />
| RS-485<br />
| -<br />
| -<br />
| 1<br />
| 1<br />
| -<br />
| -<br />
| 1<br />
| 1<br />
| -<br />
| -<br />
|- | align="center"<br />
| RS-232<br />
| 1<br />
| 2<br />
| 3<br />
| 3<br />
| 2<br />
| 4<br />
| 2<br />
| 3<br />
| 5 (TTL)<br />
| 2<br />
|- | align="center"<br />
| IRDA<br />
| 1<br />
| 1<br />
| 1<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
|- | align="center"<br />
| Ethernet<br />
| 2<br />
| 3<br />
| 1<br />
| 2<br />
| 1<br />
| 2<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
|- | align="center"<br />
| USB<br />
| 4<br />
| 7<br />
| 4<br />
| 4<br />
| 4<br />
| 8<br />
| 2<br />
| 3<br />
| 4<br />
| 4<br />
|- | align="center"<br />
| FireWire<br />
| 1<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| ?<br />
|- | align="center"<br />
| HDMI<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| 1<br />
| -<br />
| -<br />
| -<br />
| 2<br />
|- | align="center"<br />
| ROM-BIOS space<br />
| +<br />
| +<br />
| -<br />
| +<br />
| +<br />
| -<br />
| -<br />
| -<br />
| -<br />
| ?<br />
|- | align="center"<br />
| Watchdog Tmr<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| + <br />
|- | align="center"<br />
| Audio<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| -<br />
| +<br />
| +<br />
| +<br />
|- | align="center"<br />
| LVDS<br />
| 1<br />
| ?<br />
| 1<br />
| LCD<br />
| 1<br />
| 2<br />
| 0<br />
| 1<br />
| 0<br />
| 1<br />
|- | align="center"<br />
| PCI Express<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| x16<br />
| -<br />
| -<br />
| -<br />
| x1<br />
|}</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Embedded_Platforms/ru&diff=3260Embedded Platforms/ru2011-04-19T10:59:50Z<p>Art zh: </p>
<hr />
<div>{| class="wikitable" border="1" <br />
|- <br />
! board<br />
! FI853<br />
! CV700<br />
! WF945GSE3<br />
! PCM4153<br />
! LP-170<br />
! EMX780E<br />
! eBoxGC85<br />
! VDX6318<br />
! VDX-DIP<br />
|- | align="center" <br />
| mass, g<br />
| ? <br />
| ?<br />
| 650 <br />
| 162<br />
| 88<br />
| 400<br />
| 500<br />
| 63<br />
| 23<br />
|- | align="center" <br />
| dims, mm<br />
| 170х170<br />
| 200х150<br />
| 146х102<br />
| 115х96<br />
| 100x72<br />
| 170x170<br />
| 115x115x35<br />
| 100x66<br />
| 70x45<br />
|- | align="center"<br />
| temp. range<br />
| -<br />
| -<br />
| -<br />
| +<br />
| -<br />
| - <br />
| -<br />
| +<br />
| +<br />
|- | align="center"<br />
| vibro props<br />
| - <br />
| -<br />
| -<br />
| +<br />
| -<br />
| -<br />
| ?<br />
| ++<br />
| ++<br />
|- | align="center"<br />
| питание<br />
| ATX<br />
| 12V<br />
| 5V<br />
| 5V<br />
| 12V<br />
| ATX<br />
| 8..15V<br />
| 5V<br />
| 5V<br />
|- | align="center"<br />
| power<br />
| ? <br />
| ?<br />
| 12W<br />
| 7W<br />
| ?<br />
| 35W<br />
| ?<br />
| 3.7W<br />
| 1.6W<br />
|- | align="center"<br />
| heat dissipation <br />
| -<br />
| -<br />
| -<br />
| +<br />
| -<br />
| --<br />
| +<br />
| +<br />
| +<br />
|- | align="center"<br />
| known chipset<br />
| +<br />
| +<br />
| ++<br />
| ++<br />
| +<br />
| +<br />
| -<br />
| +<br />
| +<br />
|- | align="center"<br />
| open docs/code <br />
| ++<br />
| +<br />
| ++<br />
| ++<br />
| ++<br />
| +<br />
| -<br />
| -<br />
| -<br />
|- | align="center"<br />
| on-board CPU<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| -<br />
| +<br />
| +<br />
| +<br />
|- | align="center"<br />
| on-board RAM<br />
| -<br />
| -<br />
| -<br />
| +<br />
| -<br />
| -<br />
| +<br />
| +<br />
| +<br />
|- | align="center"<br />
| CF sockets<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| 0<br />
| 0<br />
|- | align="center"<br />
| on-board disks<br />
| 0<br />
| 0<br />
| 0<br />
| 1<br />
| 0<br />
| 0<br />
| 0<br />
| 2<br />
| 1<br />
|- | align="center"<br />
| LPT ports<br />
| -<br />
| 1<br />
| -<br />
| 1<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
|- | align="center"<br />
| DIO lines<br />
| 8<br />
| -<br />
| 8<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
|- | align="center"<br />
| GPIO pins<br />
| -<br />
| -<br />
| -<br />
| 8<br />
| -<br />
| 8<br />
| 24<br />
| 32<br />
| 32<br />
|- | align="center"<br />
| Comb. bus<br />
| -<br />
| -<br />
| PC-104<br />
| PC-104+<br />
| -<br />
| -<br />
| -<br />
| ISA<br />
| ISA<br />
|- | align="center"<br />
| RS-485<br />
| -<br />
| -<br />
| 1<br />
| 1<br />
| -<br />
| -<br />
| 1<br />
| 1<br />
| -<br />
|- | align="center"<br />
| RS-232<br />
| 1<br />
| 2<br />
| 3<br />
| 3<br />
| 2<br />
| 4<br />
| 2<br />
| 3<br />
| 5 (TTL)<br />
|- | align="center"<br />
| IRDA<br />
| 1<br />
| 1<br />
| 1<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
|- | align="center"<br />
| Ethernet<br />
| 2<br />
| 3<br />
| 1<br />
| 2<br />
| 1<br />
| 2<br />
| 1<br />
| 1<br />
| 1<br />
|- | align="center"<br />
| USB<br />
| 4<br />
| 7<br />
| 4<br />
| 4<br />
| 4<br />
| 8<br />
| 2<br />
| 3<br />
| 4<br />
|- | align="center"<br />
| FireWire<br />
| 1<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
|- | align="center"<br />
| HDMI<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| 1<br />
| -<br />
| -<br />
| -<br />
|- | align="center"<br />
| ROM-BIOS space<br />
| +<br />
| +<br />
| -<br />
| +<br />
| +<br />
| -<br />
| -<br />
| -<br />
| -<br />
|- | align="center"<br />
| Watchdog Tmr<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| + <br />
|- | align="center"<br />
| Audio<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| +<br />
| -<br />
| +<br />
| +<br />
|- | align="center"<br />
| LVDS<br />
| 1<br />
| ?<br />
| 1<br />
| LCD<br />
| 1<br />
| 2<br />
| 0<br />
| 1<br />
| 0<br />
|- | align="center"<br />
| PCI Express<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| x16<br />
| -<br />
| -<br />
| -<br />
|}</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Embedded_Platforms/ru&diff=3259Embedded Platforms/ru2011-04-19T09:03:24Z<p>Art zh: platforms -- the table of</p>
<hr />
<div>{| class="wikitable" border="1" <br />
|- <br />
! параметр<br />
! FI853<br />
! CV700<br />
! WF945<br />
! PCM4153<br />
|- | align="center" <br />
| масса, г<br />
| - <br />
| -<br />
| 650 <br />
| 162<br />
|- | align="center" <br />
| габариты, мм<br />
| 170х170<br />
| 200х150<br />
| 146х102<br />
| 115х96<br />
|- | align="center"<br />
| морозостойкость<br />
| плохая<br />
| плохая<br />
| плохая<br />
| плохая <br />
|- | align="center"<br />
| вибростойкость<br />
| плохая <br />
| плохая<br />
| плохая<br />
| хор.<br />
|- | align="center"<br />
| питание<br />
| ATX<br />
| 12V<br />
| 5V<br />
| 5V<br />
|- | align="center"<br />
| потр. мощность<br />
| ? <br />
| ?<br />
| 12W<br />
| 7W<br />
|}</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Embedded_Hardware/ru&diff=3258Embedded Hardware/ru2011-04-19T08:20:04Z<p>Art zh: </p>
<hr />
<div>Для встраиваимых версий КолибриОС важнейшим является выбор аппаратной платформы.<br />
Обсуждение возможных вариантов, плюсов и минусов ведется здесь[http://board.kolibrios.org/viewtopic.php?f=25&t=1683&p=32843#p32843]; <br />
дискуссионные материалы и таблицы вынесены на отдельную страницу [[Embedded_Platforms/ru|Вики]]. <br />
<br />
Что касается пилотной встраиваемой версии [[EmbeddedKOS/ru|Колибри-А]], то она разрабатывается под платформу AMD 780 и не претендует на универсальность.<br />
<br />
Необходимые системные ресурсы:<br />
*ЦП: AMD-NPT gen.0F+ (тестируется на Athlon64x2/AM2 и Sempron140/AM3)<br />
*NB: AMD690+ (соответственно 770G и 760G)<br />
*SB: SB700+ (SB710)<br />
*встроенная в чипсет графика<br />
*монитор с разрешением не менее 800х600<br />
<br />
<br />
<br />
Не поддерживаемые ресурсы:<br />
*ЦП без поддержки HT-канала и внутреннего контроллера памяти<br />
*чипсеты, не имеющие полноценной открытой документации<br />
*платформы без инициализированного BIOSом расширенного конфигурационного пространства PCIexpress (присутствие самой шины PCIe не обязательно)<br />
*COM-мыш<br />
*FDD-дисковод<br />
*EGA и VGA мониторы<br />
<br />
[[Category:Системная документация]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Window_Map&diff=3241Window Map2011-03-23T01:17:56Z<p>Art zh: Created page with 'At the moment, KolibriOS' graphics engine uses a 'flat' screen framebuffer which starts at ring0-accessible linear address LFB_BASE. Each application can draw inside its own win...'</p>
<hr />
<div>At the moment, KolibriOS' graphics engine uses a 'flat' screen framebuffer which starts at ring0-accessible linear address LFB_BASE.<br />
<br />
Each application can draw inside its own window using GUI sysfunctions; in most cases the co-ordinates relate to the client's area of the window. The kernel ignores any attempt to draw outside the window or to cross its borders. <br />
<br />
One of the most important functions of the graphics subsistem is checking window's visibility status and blocking any drawing request related to overlapped (hidden) parts of the window. A special static system array, the '''_WinMap''', is obviously used to detect the windows' visibility and overlapping.<br />
<br />
== _WinMap ==<br />
<br />
_WinMap array is probably the simplest, fastest and resource-hungriest solution. It represents every pixel of the screen, and holds the window's TASK_ID byte for that pixel.<br />
<br />
The array starts at [_WinMapAddress] and occupies [_WinMapSize] = (Ymax * Xmax) bytes. <br />
<br />
Due to its very simple structure, dozens of GUI and window-related routines access _WinMap directly (that makes the code very compact, fast and hardly readable).<br />
<br />
The array is CPU-cacheable. In one hand, it greatly accelerates most of GUI-related routines and services and explains the remarkable KolibriOS' graphics speed. <br />
<br />
In the other hand, it seriously obstructs the Cache and can apparently slow down some time-critical processes and applications. That makes the _WinMap unsuitable for most of embedded applications.<br />
<br />
== _WinList ==<br />
<br />
An essentially different approach has been tried in [[EmbeddedKOS|Kolibri-A]] branch.<br />
<br />
_WinList is a list-chained set of dynamic lists that define screen positions of each non-overlapped rectangle on the screen. <br />
Such a structure<br />
* dramatically reduces the size of window map;<br />
* standardize all the map-related operations and moves them out of GUI procedures;<br />
* accelerates rasterized graphics;<br />
* reduces the code size.<br />
<br />
''(to be continued)''</div>Art zhhttp://wiki.kolibrios.org/index.php?title=EmbeddedKOS/ru&diff=3240EmbeddedKOS/ru2011-03-23T00:09:53Z<p>Art zh: </p>
<hr />
<div>== Embedded-KOS - Колибри для встроенных систем ==<br />
<br />
Ряд практических работ, проведенных участниками проекта (см. например [http://board.kolibrios.org/viewtopic.php?t=897 Колибри на производстве]), показал принципиальную возможность внедрения КолибриОС в составе систем сбора/обработки информации и АСУП.<br /><br />
<br />
Компактное ядро с открытым кодом, минималистская простота и удобство графической подсистемы, достаточно развитый пользовательский интерфейс, приличный низкоуровневый системынй сервис, поддержка наиболее популярных сетевых протоколов и файловых систем - всё это уже сейчас позволяет говорить о Колибри как о перспективной ОС для встроенных систем.<br /><br />
<br />
В то же время, для превращения Колибри в полноценную embedded-OS требуется решить ряд серьёзных проблем: [http://board.kolibrios.org/viewtopic.php?t=1211]. <br />
<br />
Опробование вариантов таких решений ведется в рамках проекта '''Колибри-А''' (литера "А" подчеркивает привязку кода к архитектуре AMD/HT).<br /><br />
<br />
Колибри-А — пока еще очень сырая и экспериментальная система, полезная только для квалифицированных системотехников, системных программистов, а также разработчиков и наладчиков компьютерного оборудования. <big>Разработчики предупреждают, что многие стандартные механизмы системной защиты и контроля доступа к критическим системным ресурсам в Колибри-А '''отключены''' с целью облегчения максимально свободого и удобного доступа к оборудованию. Использование этой системы на домашних, офисных и серверных компьютерах '''категорически противопоказано''' и может повлечь невосстановимую потерю данных и полный выход из строя компьютера и/или подключенных к нему периферийных устройств. <br />
</big><br />
<br />
Итак, мы Вас предупредили...<br />
<br />
-----<br />
<br />
<br />
'''Некоторые особенности Колибри-А'''<br /><br />
* Повышенные требования к [[Embedded_Hardware/ru|аппаратной платформе]].<br />
* Дополнительный [[Embedded_API/ru|API-сервис]], предоставляющий пользователю расширенный доступ к низкоуровневому вводу/выводу. <br /><br />
* Бездрайверный [[SubFn62-DA/ru|ПДП]] и контроль нестандартной аппаратуры через доступный из пользовательского пространства статический системный буфер.<br />
* Расширенная поддержка функций PCI-express с элементами тренинга шины, MSI и контроля режимов питания. <br /><br />
* Новая графическая подсистема с динамической [[Window_Map| оконной картой]], оптимизированная на битмап-графику. <br />
* Размер ядра заметно сокращен - исключены многие избыточные, узкоспециальные и рудиментарные системные структуры и функции:<br />
** исключены видеорежимы низкого разрешения (ниже 800х600);<br />
** оставлен единственный видеорежим (VESA2, глубина цвета 32bpp);<br />
** удаляются сисфункции 42, 43 и 44 (забавное наследие Менуэта); <br />
** функция 46 отпадает за ненадобностью (ввод/вывод разрешён для всех портов).<br />
<br />
'''На очереди:'''<br /><br />
* Оптимизированный под RT-приложения менеджер памяти.<br />
* Минимальная поддержка APIC. <br />
* Полная поддержка PCIe, включая хотплаг и управление виртуальными каналами.<br />
* Реализация быстрой ''и безопасной'' загрузки ядра из ПЗУ. <br />
* Поддержка SATA-дисков (пока только для SB700 и только в IDE-режиме).<br />
* Поддержка некоторых классов USB-устройств (только SB700).<br />
* Дальнейшее уплотнение ядра с целью сокращения кода kernel.mnt до 64Кбайт:<br />
** удалить сифункцию 64;<br />
** удалить статические карты страниц и портов в/в;<br />
** удалить V86-режим;<br />
** поддержку FAT12, NTFS и ext2/3 сделать опциональной.<br />
<br />
'''Конечная цель: '''<br /><br />
а) 100% монолитное бездрайверное ядро, <br /><br />
б) жестко привязанное к выбранной платформе, <br /><br />
в) легко конфигурируемое под конкретную задачу, и <br /><br />
г) прошитое в бортовое ПЗУ.<br /><br />
<br />
'''Вариант реализации: '''<br />
<br />
Как payload для проекта [http://www.coreboot.org/ coreboot]. Работа над этим ведется [http://board.kolibrios.org/viewtopic.php?f=4&t=1368]<br />
Для успешного осуществления требуется удаление зависимости ядра KolibriOS от вызовов BIOS.<br />
Ссылки по теме [http://www.coreboot.org/Payloads] [http://www.coreboot.org/Development_Guidelines] [http://www.coreboot.org/Developer_Manual]<br />
<br />
[[Category:Coding]]<br />
[[Category:Системная документация]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=FAQ&diff=3239FAQ2011-03-16T17:46:44Z<p>Art zh: </p>
<hr />
<div>''Question and answer Section. You can ask question and receive an answer here. Please, make sure, that the questions similar to yours, have not yet been asked. Use search.''<br />
<br />
----<br />
<br />
====How to work with the SVN server of KolibriOS?====<br />
[[How_to_use_the_KolibriOS_Team_SVN_server|Fast start]]<br />
[[How_to_use_the_KolibriOS_Team_SVN_server/ru|Russian version of page]]<br />
<br />
====What File Systems are supported?====<br />
Read/Write: FAT16, FAT32, FAT12 (floppy). <br />
Readonly: NTFS, iso9660 (CD/DVD). <br />
<br />
====Is support for NTFS writing planned?====<br />
Not at the moment. <br />
<br />
====How to write the image to a CD?====<br />
#In nero, create a new '''BOOTABLE''' cd.<br />
#In the BOOT options tab, select 'floppy emulation' and select 'image'.<br />
#Set the path of the floppy image.<br />
#Create the project, you may also add other data to the disk. (games as doom, quake,..)<br />
#Burn it.<br />
<br />
====My USB mouse doesnt work in kolibrios.====<br />
Kolibri itself does not support USB mice.<br />
In most BIOSes there is an option to emulate the USB mouse as PS2, find it, and activate it.<br />
<br />
====How can I boot Kolibri from my Harddisk? ====<br />
<br />
# [[DualBoot_Kolibrios_with_Windows_NT/2K/XP/en]]<br />
# [[Booting from GRUB]]<br />
<br />
====How can I boot Kolibri from a USB drive?====<br />
# [[Booting from USB flash]]<br />
<br />
====How can I boot Kolibri from the network?====<br />
# [[Boot from PXE]]<br />
<br />
====What network cards are supported?====<br />
*3Com fast etherlink 3c59x ,e therlink XL 3c900 and 3c905 <br />
*RealTek rtl8029, rtl8139, rtl8168, rtl8169 <br />
*Intel i8255x a.k.a. eepro100<br />
*Sis900<br />
*pcnet32<br />
<br />
====Where can i find the nightbuilds of kolibrios?====<br />
http://builds.kolibrios.org/<br />
<br />
'''See also'''<br />
#[[HowTo]]<br />
<br />
[[Category:Manuals]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=SysFn65/ru&diff=3136SysFn65/ru2010-12-21T00:06:54Z<p>Art zh: </p>
<hr />
<div>'''Функция 65 - вывести изображение с палитрой в окно.'''<br />
<br />
''Параметры:''<br />
<br />
* eax = 65 - номер функции<br />
* ebx = указатель на изображение<br />
* ecx = [размер по оси x]*65536 + [размер по оси y]<br />
* edx = [координата по оси x]*65536 + [координата по оси y]<br />
* esi = число бит на пиксель, должно быть 1, 4, 8, 15, 16, 24 или 32<br />
* edi = указатель на палитру (2 в степени esi цветов 0x00RRGGBB); игнорируется при esi > 8<br />
* ebp = байтовое смещение между концом предыдущей строки изображения и началом следующей строки <br />
<br />
''Возвращаемое значение:''<br />
<br />
* функция не возвращает значения<br />
<br />
''Замечания:''<br />
<br />
* Координаты изображения - это координаты верхнего левого угла изображения относительно окна.<br />
* Размер изображения в байтах есть xsize*ysize.<br />
* Формат изображения с 1 битом на пиксель: каждый байт изображения, за исключением, быть может, последних байтов строк, содержит информацию о цвете 8 пикселей, старший бит соответствует первому пикселю.<br />
* Формат изображения с 4 битами на пиксель: каждый байт изображения, за исключением последних байтов строк (если ширина изображения нечётна), содержит информацию о цвете 2 пикселей, старшая тетрада соответствует первому пикселю.<br />
* Формат изображения с 8 битами на пиксель: каждый байт изображения рассматривается как индекс в палитре.<br />
* Если изображение использует не все 256 цветов, а меньше, размер палитры может быть меньше 256.<br />
* Формат изображения с 15 битами на пиксель: цвет каждого пикселя кодируется как (в битовом представлении) 0RRRRRGGGGGBBBBB - по 5 пикселей на каждый цвет.<br />
* Формат изображения с 16 битами на пиксель: цвет каждого пикселя кодируется как RRRRRGGGGGGBBBBB (схема 5+6+5).<br />
* Формат изображения с 24 битами на пиксель: цвет каждого пикселя кодируется тремя байтами - последовательно синяя, зелёная, красная составляющие цвета.<br />
* Формат изображения с 32 битами на пиксель: аналогично 24, только есть ещё игнорируемый четвёртый байт.<br />
* Вызов [[SysFn07/ru | функции 7]] эквивалентен вызову этой функции с параметрами esi=24, ebp=0.<br />
<br />
.<br />
{{System_functions}}<br />
[[Category: SysCalls]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=SysFn61/ru&diff=3135SysFn61/ru2010-12-20T23:55:26Z<p>Art zh: </p>
<hr />
<div>'''Функция 61 - получить параметры для прямого доступа к графике.'''<br />
<br />
Программе доступны данные графического экрана (область памяти, которая<br />
собственно и отображает содержимое экрана) напрямую без вызовов<br />
системных функций через селектор gs:<br />
<br />
<CODE>mov eax, [gs:0]</CODE><br />
<br />
поместит в eax первый dword буфера, содержащий информацию о цвете<br />
левой верхней точки (и, возможно, цвета нескольких следующих).<br />
<br />
<CODE>mov [gs:0], eax</CODE><br />
<br />
при работе в режимах VESA c LFB<br />
установит цвет левой верхней точки<br />
(и возможно, цвета нескольких следующих).<br />
Для интерпретации данных графического экрана требуется знание<br />
некоторых параметров, которые возвращаются этой функцией.<br />
<br />
''Замечания:''<br />
<br />
* Параметры графики очень редко меняются при работе системы:<br />
** когда пользователь работает с программой VRR,<br />
** или когда разрешение экрана изменяется драйвером ATIKMS.<br />
* При изменении видеорежима система перерисовывает все окна (событие с кодом 1) и перерисовывает фон (событие 5). Эти же события происходят и в других случаях, которые встречаются значительно чаще, чем изменение видеорежима.<br />
* При работе в видеорежимах с LFB селектор gs указывает на собственно LFB, так что чтение/запись по gs приводят непосредственно к изменению содержимого экрана. При работе в видеорежимах без LFB gs указывает на некоторую область данных ядра, причём все функции вывода на экран добросовестно выполняют двойную работу по записи непосредственно на экран и по записи в этот буфер. В результате при чтении содержимого этого буфера результаты соответствуют содержимому экрана (с, вообще говоря, большим цветовым разрешением), а запись игнорируется. Исключением является режим 320*200, для которого в главном цикле системного потока выполняется обновление экрана в соответствии с движениями курсора мыши.<br />
<br />
=== Разрешение экрана ===<br />
<br />
''Параметры:''<br />
<br />
* eax = 61 - номер функции<br />
* ebx = 1 - номер подфункции<br />
<br />
''Возвращаемое значение:''<br />
<br />
* eax = [разрешение по оси x]*65536 + [разрешение по оси y]<br />
<br />
''Замечания:''<br />
<br />
* Можно использовать функцию 14 с учётом того, что она возвращает размеры на 1 меньше. Это полностью эквивалентный способ.<br />
<br />
=== Число бит на пиксель ===<br />
<br />
''Параметры:''<br />
<br />
* eax = 61 - номер функции<br />
* ebx = 2 - номер подфункции<br />
<br />
''Возвращаемое значение:''<br />
<br />
* eax = число бит на пиксель (24 или 32)<br />
<br />
=== Число байт на строку ===<br />
''Параметры:''<br />
<br />
* eax = 61 - номер функции<br />
* ebx = 3 - номер подфункции<br />
<br />
''Возвращаемое значение:''<br />
<br />
* eax = число байт, которое занимает одна строка развёртки (горизонтальная линия на экране)<br />
<br />
{{System_functions}}<br />
[[Category: SysCalls]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=FHT/ru&diff=3111FHT/ru2010-11-03T14:26:54Z<p>Art zh: FHT</p>
<hr />
<div>Реализация одного из самых эффективных алгоритмов 1-мерного преобразования Хартли для FPU x87+. <br />
<br />
Не входит в официальный дистрибутив и имеет GPL-подобную лицензию, разрешающую свободное копирование, модификацию и коммерческое использование кода ''только в среде КолибриОС''. Портирование в другие ОС без разрешения автора ''не допускается''.<br><br />
<br />
Преобразование Хартли ([http://ru.wikipedia.org/wiki/%D0%94%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A5%D0%B0%D1%80%D1%82%D0%BB%D0%B8 БПХ]) является полным аналогом известного преобразования Фурье ([http://ru.wikipedia.org/wiki/%D0%94%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A4%D1%83%D1%80%D1%8C%D0%B5 БПФ]), но выполняется в вещественном пространстве по базису функции Хартли<br />
<br />
'''Cas ''x'' = Cos ''x'' + Sin ''x'' '''.<br />
<br />
Для преобразования Хартли требуется вдвое меньше памяти, чем для БПФ той же размерности; причем в большинстве реализаций БПХ вычисляется на 10-40% быстрее аналогичного БПФ.<br><br />
Информация о программе [http://board.kolibrios.org/viewtopic.php?f=9&t=1518 здесь]<br />
<br />
Скачать можно с [ftp://kolibrios.org/users/art_zh/FHT ftp://kolibrios.org/users/art_zh]<br />
<br />
==Автор==<br />
[[User:Art_zh|art_zh]]; Copyright (C) A.Jerdev, 2010<br />
{{Образование}}<br />
[[Category:Образование]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=User:Art_zh&diff=3110User:Art zh2010-11-03T14:20:23Z<p>Art zh: new email</p>
<hr />
<div>{| align="center" cellspacing="1" class="user_info"<br />
!Real name:<br />
|Artem Jerdev<br />
|Жердев Артём Александрович <br />
|-<br />
!Where from:<br />
|Exeter, UK<br />
|г.Фрунзе Киргизской ССР<br />
|-<br />
!Projects:<br />
|[[EmbeddedKOS/en | Kolibri-A]], [[ROM_boot|ROM-boot]], [[Documentation|docs]]<br />
|[[EmbeddedKOS/ru | Колибри-А]], [[ROM_boot|бездисковая загрузка]], [[Documentation/ru|справочная система]]<br />
|-<br />
!Contacts:<br />
|[mailto:kolibri@jerdev.co.uk]<br />
|http://jerdev.co.uk ; ftp://kolibrios.org/users/art_zh<br />
|}</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Template:%D0%9E%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&diff=3109Template:Образование2010-11-03T13:40:12Z<p>Art zh: FHT added</p>
<hr />
<div>{{Navbox<br />
| title = [[:Category:Образование|Образовательные и научные программы]]<br />
<br />
| group1 = Образовательные<br />
| list1 = {{nowrap|[[Graph/ru|Graph - построение графиков функций]] &bull;}} {{nowrap|[[Period/ru|Period - таблица химических элементов (известная как таблица Менделеева)]]}}<br />
<br />
| group2 = Научные<br />
| list2 = {{nowrap|[[Spektr/ru|Spektr - программа для Месбауэровской спектроскопии]] &bull;}}{{nowrap|[[FHT/ru| FHT - Быстрое преобразование Хартли]]}}<br />
}}</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Last_changes&diff=3108Last changes2010-11-03T13:27:15Z<p>Art zh: /* Russian */</p>
<hr />
<div>== English ==<br />
************************<br />
* Kolibri OS 0.7.7.0+ *<br />
* February 2010 *<br />
************************<br />
<br />
The latest release of the OS is available on the official site:<br />
http://kolibrios.org<br />
<br />
If you have questions - look for support on our forum:<br />
http://board.kolibrios.org (rus+eng)<br />
<br />
***********************************<br />
* What is new in this release? *<br />
***********************************<br />
<br />
The following changes, revisions, fixes in the kernel have been made:<br />
<br />
by Evgeny Grechnikov (Diamond) - Russian Federation<br />
1) Improvement of drives detection using BIOS service (V86)<br />
2) Kernel bugfixes.<br />
<br />
by Sergey Semyonov (Serge) - Russian Federation<br />
1) Driver for ATI videocards updated.<br />
2) Linux-like kernel mutexes<br />
<br />
by Mihail Semenyako (mike.dld) - Republic of Belarus<br />
1) Refactoring of window subsystem.<br />
<br />
by <Lrz><br />
1) Processing API functions in order to completely remove the shift-register-call<br />
2) Refactoring, optimization, bugfixes of some places in the kernel.<br />
<br />
by A.Jerdev (art_zh) - United Kingdom<br />
1) Memory-mapped I/O (MMIO) access from the userworld.<br />
2) PCIe Extended configuration space access (auto-adjust for AMD-NPT since Athlon64).<br />
<br />
by turbanoff<br />
1) Read from ext2fs/ext3fs.<br />
<br />
by Marat Zakiyanov (Mario79) - Russian Federation<br />
1) Improvements in the processing of mouse clicks.<br />
<br />
by hidnplayr<br />
1) Rewriting of the entire network subsystem.<br />
<br />
by Asper<br />
1) Drivers for the sound cards VT823(X) and EMU10K1X.<br />
<br />
by tsdima<br />
1) Driver for the sound card ForteMedia fm801.<br />
<br />
by Maxis<br />
1) changes in free memory checks.<br />
<br />
<br />
<br />
The following changes, revisions, fixes in applications have been made:<br />
<br />
* New versions of applications and new applications:<br />
<br />
FTPS - tsdima, some improvements<br />
VIEW3DS - macgub, version 0.054<br />
FASM - Pavel Rymovski (Heavyiron), updated to version 1.69.11<br />
IgorA, use the library box_lib, russification,<br />
Marat Zakiyanov (Mario79) fix bugs encountered<br />
Evgeny Grechnikov (Diamond), fix of window wrapping<br />
PCIDEV - art_zh, MMIO sample dumps added; vendors database<br />
trimmed to reduce the distro size. <br />
BOARD - Evgeny Grechnikov (Diamond), do not throw out existing<br />
messages at the program start<br />
UNVWATER - Asper, demo ported from OctaOS<br />
(the author is Octavio Vega Fernandez).<br />
HEED - staper, version 0.14: use the library box_lib;<br />
Ctrl+C/X/V, Ctrl+B to select a block<br />
Marat Zakiyanov (Mario79), using of OpenDialog component,<br />
little optimization of the code <br />
SHELL - Albom, version 0.4.2<br />
CPU - Evgeny Grechnikov (Diamond) at the suggestion of<br />
Kirill Lipatov (Leency), do not show system processes<br />
by default<br />
HTMLV - Kirill Lipatov (Leency), version 0.62a<br />
EOLITE - Kirill Lipatov (Leency), version 0.98.7a<br />
RTFREAD - Sorcerer, cosmetic fix<br />
dunkaist, menu_bar and scroll_bar from box_lib, 'end' hotkey<br />
E80 - Albom, version 0.5.1<br />
KIV - Evgeny Grechnikov (Diamond), file name in the window<br />
title, configurable keyboard shortcuts for next/prev<br />
images in the current folder<br />
SUDOKU - staper, port of Sudoku game - that is a puzzle with digits, where you<br />
have to fill free cells with digits from 1 to 9 so that every row,<br />
every column and every small square 3x3 contain each digit just one time.<br />
There are 9 levels in the game.<br />
REVERSI - staper, port of strategy game Reversi (Othello)<br />
MSQUARE - staper, math puzzle "magic square": sum of the numbers in rows, columns <br />
(less often in diagonals) should be equal<br />
FINDN-S - Artemonische, a simple game in which you have to collect all the numbers <br />
in the order of 10 to 90<br />
PANEL - Evgeny Grechnikov (Diamond), a little change in the panel clock<br />
and reanimation of backlight on the Alt+[Shift+]Tab press.<br />
AC97SND - Asper, support of playlists in m3u format.<br />
@NOTIFY - SoUrcerer, program for popup text messages<br />
DOSBOX - Evgeny Grechnikov (Diamond), version 0.74<br />
ASCIIVJU - Konstantin Dutkevich (Nazarus), program shows ASCII table <br />
PIPETKA - Rock_maniak_forever, program to get color of a pixel on the screen<br />
SNAKE - dunkaist, yet another implementation of classic game<br />
FHT4i - art_zh, 4-points Fast Hartley transform routine (FPU87 version)<br />
<br />
<br />
<br />
* New versions of dynamic libraries and new dynamic libraries:<br />
libini - Evgeny Grechnikov (Diamond), added function to read<br />
keyboard shortcuts<br />
box_lib - IgorA, update component tree_list, new component<br />
text_editor, documentation on the library<br />
Marat Zakiyanov (Mario79) refinement of ОpenDialog component, rewriting <br />
of some applications to use it, new component PathShow<br />
<br />
== Russian ==<br />
************************<br />
* Колибри OS 0.7.7.0+ *<br />
* февраль 2010 *<br />
************************<br />
<br />
Последний релиз системы вы можете найти на официальном сайте:<br />
http://kolibrios.org<br />
<br />
Если у вас возникли вопросы, обращайтесь за поддержкой на наш форум:<br />
http://board.kolibrios.org<br />
<br />
***********************************<br />
* Что нового в этом выпуске? *<br />
***********************************<br />
<br />
В ядре произведены следующие изменения, доработки, исправления:<br />
<br />
От Евгения Гречникова (Diamond) - Российская Федерация<br />
1) улучшения в определении дисков через BIOS (V86)<br />
2) исправление ну очень многих косяков в ядре и приложениях<br />
<br />
От Сергея Семёнова (Serge) - Российская Федерация<br />
1) Обновление драйвера для видеокарт ATI.<br />
2) Линукс-подобные мьютексы ядра<br />
<br />
От Михаила Семеняко (mike.dld) - Республика Беларусь<br />
1) Рефакторинг оконной подсистемы.<br />
<br />
От <Lrz> - Российская Федерация<br />
1) Переработка функций с целью полностью убрать сдвиг-регистровый вызов API<br />
2) Рефакторинг некоторых участков ядра, оптимизации, багфиксы.<br />
<br />
От Артёма Жердева (art_zh) - СССР<br />
1) Доступ из приложения к отображённым на память областям ввода-вывода (MMIO).<br />
2) Доступ к расширенному конфигурационному пространству PCI Express (автонастройка для AMD-NPT начиная с Athlon64).<br />
<br />
От Андрея Турбанова (turbanoff) - Российская Федерация<br />
1) Поддержка чтения файловых систем ext2/ext3.<br />
<br />
От Марата Закиянова (Mario79) - Российская Федерация<br />
1) Улучшения в обработке нажатия мыши.<br />
<br />
От hidnplayr<br />
1) Переписывание всей подсистемы работы с сетью.<br />
<br />
От Asper<br />
1) Драйвера для звуковых карт VT823(X) и EMU10K1X.<br />
<br />
От tsdima<br />
1) Драйвер для звуковой карты ForteMedia fm801.<br />
<br />
От Maxis<br />
1) Изменения в проверке свободной памяти.<br />
<br />
<br />
<br />
* С приложениями произведены следующие изменения, доработки, исправления:<br />
<br />
FTPS - tsdima, некоторые улучшения<br />
VIEW3DS - macgub, версия 0.054<br />
FASM - Павел Рымовский (Heavyiron), обновление до версии 1.69.11<br />
IgorA, использование библиотеки box_lib, русификация,<br />
Марат Закиянов (Mario79), исправление возникших глюков<br />
Евгений Гречников (Diamond), исправлено свертывание окна<br />
PCIDEV - Артем Жердев (art_zh), дамп MMIO-областей PCI-устройства; сокращение <br />
кода за счет удаления малоизвестных вендоров из основной базы данных<br />
BOARD - Евгений Гречников (Diamond), не отбрасывать непрочитанные<br />
сообщения при старте программы<br />
UNVWATER - Asper, порт демки из OctaOS (автор Octavio Vega Fernandez)<br />
HEED - staper, версия 0.15: использование библиотеки box_lib;<br />
Ctrl+C/X/V, Ctrl+B для выделения блока, косметические изменения<br />
Марат Закиянов (Mario79), использование компонента OpenDialog,<br />
небольшая оптимизация кода <br />
SHELL - Albom, версия 0.4.2<br />
CPU - Евгений Гречников (Diamond) по предложению<br />
Кирилла Липатова (Leency), по умолчанию не показывать<br />
системные процессы <br />
TINYPAD - mike.dld, решена проблема с миганием курсора в некоторых случаях<br />
HTMLV - Кирилл Липатов (Leency), версия 0.62a<br />
EOLITE - Кирилл Липатов (Leency), версия 0.98.7a<br />
RTFREAD - Sorcerer, косметическая правка<br />
dunkaist, меню и скроллбар, горячая клавиша 'end'<br />
E80 - Albom, версия 0.5.1<br />
KIV - Евгений Гречников (Diamond), имя текущего файла в заголовке<br />
окна, настраиваемые клавиатурные сокращения для перехода<br />
к следующему/предыдущему изображению в папке, исправления обработки<br />
маленьких файлов формата TGA<br />
Марат Закиянов (Mario79) исправления при работе со списком файлов<br />
SUDOKU - staper, порт игры Судоку - это головоломка-пазл с числами, где нужно<br />
заполнить свободные клетки цифрами от 1 до 9 так, чтобы в каждой строке,<br />
в каждом столбце и в каждом малом квадрате 3x3 каждая цифра встречалась<br />
бы только один раз. Есть 9 уровней сложности.<br />
REVERSI - staper, порт стратегической игры Реверси (Отелло)<br />
MSQUARE - staper, математическая головоломка "Магический квадрат": суммы<br />
чисел в строках, столбцах (реже в диагоналях) должны быть равны<br />
FINDN-S - Artemonische, простенькая игрушка в которой нужно собрать все<br />
числа по порядку от 10 до 90<br />
PANEL - Евгений Гречников (Diamond), небольшое исправление в часах на панели<br />
и реанимация подсветки при нажатии Alt+[Shift+]Tab.<br />
AC97SND - Asper, поддержка плейлистов в формате m3u.<br />
@NOTIFY - SoUrcerer, программа показывает всплывающие сообщения<br />
DOSBOX - Евгений Гречников (Diamond), версия 0.74<br />
ASCIIVJU - Константин Дуткевич (Nazarus), программа отображает таблицу ASCII <br />
PIPETKA - Rock_maniak_forever, программа для взятия цвета пиксела с экрана<br />
SNAKE - dunkaist, ещё одна реализация классической игры<br />
FHT4i - art_zh, 4-точечное Быстрое преобразование Хартли (версия для FPU87)<br />
<br />
<br />
<br />
* С системными библиотеками произведены следующие<br />
изменения, доработки, исправления:<br />
libini - Евгений Гречников (Diamond), добавлена функция для<br />
чтения сочетаний клавиш<br />
box_lib - IgorA, доработки нового компонента tree_list, новый компонент text_editor,<br />
документация по библиотеке<br />
Марат Закиянов (Mario79) доработка компонента ОpenDialog, перевод <br />
некоторых приложений на его использование, новый компонент PathShow<br />
<br />
[[Category:News]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Last_changes&diff=3107Last changes2010-11-03T13:23:02Z<p>Art zh: /* English */</p>
<hr />
<div>== English ==<br />
************************<br />
* Kolibri OS 0.7.7.0+ *<br />
* February 2010 *<br />
************************<br />
<br />
The latest release of the OS is available on the official site:<br />
http://kolibrios.org<br />
<br />
If you have questions - look for support on our forum:<br />
http://board.kolibrios.org (rus+eng)<br />
<br />
***********************************<br />
* What is new in this release? *<br />
***********************************<br />
<br />
The following changes, revisions, fixes in the kernel have been made:<br />
<br />
by Evgeny Grechnikov (Diamond) - Russian Federation<br />
1) Improvement of drives detection using BIOS service (V86)<br />
2) Kernel bugfixes.<br />
<br />
by Sergey Semyonov (Serge) - Russian Federation<br />
1) Driver for ATI videocards updated.<br />
2) Linux-like kernel mutexes<br />
<br />
by Mihail Semenyako (mike.dld) - Republic of Belarus<br />
1) Refactoring of window subsystem.<br />
<br />
by <Lrz><br />
1) Processing API functions in order to completely remove the shift-register-call<br />
2) Refactoring, optimization, bugfixes of some places in the kernel.<br />
<br />
by A.Jerdev (art_zh) - United Kingdom<br />
1) Memory-mapped I/O (MMIO) access from the userworld.<br />
2) PCIe Extended configuration space access (auto-adjust for AMD-NPT since Athlon64).<br />
<br />
by turbanoff<br />
1) Read from ext2fs/ext3fs.<br />
<br />
by Marat Zakiyanov (Mario79) - Russian Federation<br />
1) Improvements in the processing of mouse clicks.<br />
<br />
by hidnplayr<br />
1) Rewriting of the entire network subsystem.<br />
<br />
by Asper<br />
1) Drivers for the sound cards VT823(X) and EMU10K1X.<br />
<br />
by tsdima<br />
1) Driver for the sound card ForteMedia fm801.<br />
<br />
by Maxis<br />
1) changes in free memory checks.<br />
<br />
<br />
<br />
The following changes, revisions, fixes in applications have been made:<br />
<br />
* New versions of applications and new applications:<br />
<br />
FTPS - tsdima, some improvements<br />
VIEW3DS - macgub, version 0.054<br />
FASM - Pavel Rymovski (Heavyiron), updated to version 1.69.11<br />
IgorA, use the library box_lib, russification,<br />
Marat Zakiyanov (Mario79) fix bugs encountered<br />
Evgeny Grechnikov (Diamond), fix of window wrapping<br />
PCIDEV - art_zh, MMIO sample dumps added; vendors database<br />
trimmed to reduce the distro size. <br />
BOARD - Evgeny Grechnikov (Diamond), do not throw out existing<br />
messages at the program start<br />
UNVWATER - Asper, demo ported from OctaOS<br />
(the author is Octavio Vega Fernandez).<br />
HEED - staper, version 0.14: use the library box_lib;<br />
Ctrl+C/X/V, Ctrl+B to select a block<br />
Marat Zakiyanov (Mario79), using of OpenDialog component,<br />
little optimization of the code <br />
SHELL - Albom, version 0.4.2<br />
CPU - Evgeny Grechnikov (Diamond) at the suggestion of<br />
Kirill Lipatov (Leency), do not show system processes<br />
by default<br />
HTMLV - Kirill Lipatov (Leency), version 0.62a<br />
EOLITE - Kirill Lipatov (Leency), version 0.98.7a<br />
RTFREAD - Sorcerer, cosmetic fix<br />
dunkaist, menu_bar and scroll_bar from box_lib, 'end' hotkey<br />
E80 - Albom, version 0.5.1<br />
KIV - Evgeny Grechnikov (Diamond), file name in the window<br />
title, configurable keyboard shortcuts for next/prev<br />
images in the current folder<br />
SUDOKU - staper, port of Sudoku game - that is a puzzle with digits, where you<br />
have to fill free cells with digits from 1 to 9 so that every row,<br />
every column and every small square 3x3 contain each digit just one time.<br />
There are 9 levels in the game.<br />
REVERSI - staper, port of strategy game Reversi (Othello)<br />
MSQUARE - staper, math puzzle "magic square": sum of the numbers in rows, columns <br />
(less often in diagonals) should be equal<br />
FINDN-S - Artemonische, a simple game in which you have to collect all the numbers <br />
in the order of 10 to 90<br />
PANEL - Evgeny Grechnikov (Diamond), a little change in the panel clock<br />
and reanimation of backlight on the Alt+[Shift+]Tab press.<br />
AC97SND - Asper, support of playlists in m3u format.<br />
@NOTIFY - SoUrcerer, program for popup text messages<br />
DOSBOX - Evgeny Grechnikov (Diamond), version 0.74<br />
ASCIIVJU - Konstantin Dutkevich (Nazarus), program shows ASCII table <br />
PIPETKA - Rock_maniak_forever, program to get color of a pixel on the screen<br />
SNAKE - dunkaist, yet another implementation of classic game<br />
FHT4i - art_zh, 4-points Fast Hartley transform routine (FPU87 version)<br />
<br />
<br />
<br />
* New versions of dynamic libraries and new dynamic libraries:<br />
libini - Evgeny Grechnikov (Diamond), added function to read<br />
keyboard shortcuts<br />
box_lib - IgorA, update component tree_list, new component<br />
text_editor, documentation on the library<br />
Marat Zakiyanov (Mario79) refinement of ОpenDialog component, rewriting <br />
of some applications to use it, new component PathShow<br />
<br />
== Russian ==<br />
************************<br />
* Колибри OS 0.7.7.0+ *<br />
* февраль 2010 *<br />
************************<br />
<br />
Последний релиз системы вы можете найти на официальном сайте:<br />
http://kolibrios.org<br />
<br />
Если у вас возникли вопросы, обращайтесь за поддержкой на наш форум:<br />
http://board.kolibrios.org<br />
<br />
***********************************<br />
* Что нового в этом выпуске? *<br />
***********************************<br />
<br />
В ядре произведены следующие изменения, доработки, исправления:<br />
<br />
От Евгения Гречникова (Diamond) - Российская Федерация<br />
1) улучшения в определении дисков через BIOS (V86)<br />
2) исправление ну очень многих косяков в ядре и приложениях<br />
<br />
От Сергея Семёнова (Serge) - Российская Федерация<br />
1) Обновление драйвера для видеокарт ATI.<br />
2) Линукс-подобные мьютексы ядра<br />
<br />
От Михаила Семеняко (mike.dld) - Республика Беларусь<br />
1) Рефакторинг оконной подсистемы.<br />
<br />
От <Lrz> - Российская Федерация<br />
1) Переработка функций с целью полностью убрать сдвиг-регистровый вызов API<br />
2) Рефакторинг некоторых участков ядра, оптимизации, багфиксы.<br />
<br />
От Артёма Жердева (art_zh) - СССР<br />
1) Доступ из приложения к отображённым на память областям ввода-вывода (MMIO).<br />
2) Доступ к расширенному конфигурационному пространству PCI Express (автонастройка для AMD-NPT начиная с Athlon64).<br />
<br />
От Андрея Турбанова (turbanoff) - Российская Федерация<br />
1) Поддержка чтения файловых систем ext2/ext3.<br />
<br />
От Марата Закиянова (Mario79) - Российская Федерация<br />
1) Улучшения в обработке нажатия мыши.<br />
<br />
От hidnplayr<br />
1) Переписывание всей подсистемы работы с сетью.<br />
<br />
От Asper<br />
1) Драйвера для звуковых карт VT823(X) и EMU10K1X.<br />
<br />
От tsdima<br />
1) Драйвер для звуковой карты ForteMedia fm801.<br />
<br />
От Maxis<br />
1) Изменения в проверке свободной памяти.<br />
<br />
<br />
<br />
* С приложениями произведены следующие изменения, доработки, исправления:<br />
<br />
FTPS - tsdima, некоторые улучшения<br />
VIEW3DS - macgub, версия 0.054<br />
FASM - Павел Рымовский (Heavyiron), обновление до версии 1.69.11<br />
IgorA, использование библиотеки box_lib, русификация,<br />
Марат Закиянов (Mario79), исправление возникших глюков<br />
Евгений Гречников (Diamond), исправлено свертывание окна<br />
PCIDEV - Артем Жердев (art_zh), дамп MMIO-областей PCI-устройства; сокращение <br />
кода за счет удаления малоизвестных вендоров из основной базы данных<br />
BOARD - Евгений Гречников (Diamond), не отбрасывать непрочитанные<br />
сообщения при старте программы<br />
UNVWATER - Asper, порт демки из OctaOS (автор Octavio Vega Fernandez)<br />
HEED - staper, версия 0.15: использование библиотеки box_lib;<br />
Ctrl+C/X/V, Ctrl+B для выделения блока, косметические изменения<br />
Марат Закиянов (Mario79), использование компонента OpenDialog,<br />
небольшая оптимизация кода <br />
SHELL - Albom, версия 0.4.2<br />
CPU - Евгений Гречников (Diamond) по предложению<br />
Кирилла Липатова (Leency), по умолчанию не показывать<br />
системные процессы <br />
TINYPAD - mike.dld, решена проблема с миганием курсора в некоторых случаях<br />
HTMLV - Кирилл Липатов (Leency), версия 0.62a<br />
EOLITE - Кирилл Липатов (Leency), версия 0.98.7a<br />
RTFREAD - Sorcerer, косметическая правка<br />
dunkaist, меню и скроллбар, горячая клавиша 'end'<br />
E80 - Albom, версия 0.5.1<br />
KIV - Евгений Гречников (Diamond), имя текущего файла в заголовке<br />
окна, настраиваемые клавиатурные сокращения для перехода<br />
к следующему/предыдущему изображению в папке, исправления обработки<br />
маленьких файлов формата TGA<br />
Марат Закиянов (Mario79) исправления при работе со списком файлов<br />
SUDOKU - staper, порт игры Судоку - это головоломка-пазл с числами, где нужно<br />
заполнить свободные клетки цифрами от 1 до 9 так, чтобы в каждой строке,<br />
в каждом столбце и в каждом малом квадрате 3x3 каждая цифра встречалась<br />
бы только один раз. Есть 9 уровней сложности.<br />
REVERSI - staper, порт стратегической игры Реверси (Отелло)<br />
MSQUARE - staper, математическая головоломка "Магический квадрат": суммы<br />
чисел в строках, столбцах (реже в диагоналях) должны быть равны<br />
FINDN-S - Artemonische, простенькая игрушка в которой нужно собрать все<br />
числа по порядку от 10 до 90<br />
PANEL - Евгений Гречников (Diamond), небольшое исправление в часах на панели<br />
и реанимация подсветки при нажатии Alt+[Shift+]Tab.<br />
AC97SND - Asper, поддержка плейлистов в формате m3u.<br />
@NOTIFY - SoUrcerer, программа показывает всплывающие сообщения<br />
DOSBOX - Евгений Гречников (Diamond), версия 0.74<br />
ASCIIVJU - Константин Дуткевич (Nazarus), программа отображает таблицу ASCII <br />
PIPETKA - Rock_maniak_forever, программа для взятия цвета пиксела с экрана<br />
SNAKE - dunkaist, ещё одна реализация классической игры<br />
<br />
<br />
<br />
* С системными библиотеками произведены следующие<br />
изменения, доработки, исправления:<br />
libini - Евгений Гречников (Diamond), добавлена функция для<br />
чтения сочетаний клавиш<br />
box_lib - IgorA, доработки нового компонента tree_list, новый компонент text_editor,<br />
документация по библиотеке<br />
Марат Закиянов (Mario79) доработка компонента ОpenDialog, перевод <br />
некоторых приложений на его использование, новый компонент PathShow<br />
<br />
[[Category:News]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Hardware_Support/ru&diff=3106Hardware Support/ru2010-11-03T00:07:07Z<p>Art zh: /* Список оборудования */</p>
<hr />
<div>KolibriOS частично обеспечивает поддержку оборудования персонального компьютера. Часть оборудования поддерживается ядром ОС, часть динамически загружаемыми драйверами, мало того система предоставляет возможность прямого доступа к оборудованию прямо из пользовательского режима! Т.е. вы можете написать программу, которая сможет работать с оборудованием используя соответсвующий системный сервис. Правда этот подход лучше использовать исключительно в отладочных или исследовательских целях, а для "нормальной" поддержки оборудования всё-таки писать драйвера. Также нужно понимать, что существуют два вида драйверов: <br />
* Драйвер являющейся частью ядра, т.е. весь его код может находиться в отдельном модуле, но после компиляции ядра он станет частью кода ядра системы (например: hd_drv.inc).<br />
* Драйвер динамически подгружаемый в адресное пространство ядра уже после загрузки системы (например: sound.asm), эти драйвера находятся в специальной системной директории (/rd/1/drivers/).<br />
<br />
== Состав аппаратного обеспечения ПК ==<br />
<br />
Итак из чего же состоит компьютер? Большинство пользователей, вспомнив уроки информатики, тут же назовут: системный блок, монитор, клавиатура, мышь. Многие подумав добавят HDD, CD/DVD, Floppy приводы, видео, аудио и сетевую карты. А если заглянуть поглубже? <br />
<br />
В системном блоке основным элементом является материнская плата, а на ней находится сердце компьютера - центральный процессор (ЦПУ) и оперативная память (ОП). Программиста же решившего написать драйвер для поддержки какого-то устройства в KolibriOS, больше всего заинтересует Южный Мост, чип где сходятся большинство ниточек, контролирующих оборудование. <br />
Существует также Северный Мост, посредством которого Южный Мост и связан с ЦПУ и ОП, но его мы пока подробно рассматривать не будем ввиду его небольшой функциональности с точки зрения программиста.<br />
<br />
== Компоненты южного моста ==<br />
<br />
Большинство устройств представлены в Южном Мосту в качестве так называемых ''контроллеров'' - программно-доступных электронных блоков, управляющих работой конкретного оборудования. Из-за огромного разнообразия, многофункциональности и слабой стандартизации современного компьютерного "железа", каждому такому контроллеру требуется уникальный ''драйвер'' - специальная системная программа, обеспечивающая инициализацию, конфигурирование, эффективное управление оборудованием в реальной системной среде, и (самое главное!-) быстрый и надежный ввод/вывод потоков информации через данное устройство. <br />
<br />
<!-- Asper: This information mainly from http://ru.wikipedia.org/wiki/Southbridge page.--><br />
Функционально южный мост включает в себя:<br />
* стандартный контроллер шины [[PCI/ru|PCI]];<br />
* контроллер шины [[PCI_Express/ru|PCI Express]];<br />
* шина [[ISA/ru|ISA]], которая используется достаточно редко, но тем не менее остается неотъемлемой частью любого южного моста. <br />
* контроллер шины SMBus или [[I2C]] для связи с другими устройствами на материнской плате (например, для управления вентиляторами);<br />
* [[DMA/ru|DMA]] контроллер с поддержкой древних [[ISA/ru|ISA]] и [[LPC/ru|LPC]]-протоколов прямого доступа к [[RAM/ru|оперативной памяти]] без участия ЦПУ;<br />
* контроллеры прерываний: старый [[PIC/ru|PIC]] и "продвинутый" [[APIC/ru|APIC]];<br />
* [[ATA/ru|ATA]] (IDE) и [[SATA/ru|SATA]] контроллеры;<br />
* контроллер шины LPC для передачи данных и управления [[SIO/ru|SIO]] (это такие устройства, как клавиатура, мышь, [[параллельный порт|параллельный]], [[последовательный порт]], [[инфракрасный порт]] и флоппи-контроллер) и [[BIOS/ru|BIOS]] ROM ([[FlashROM/ru|флэш]]);<br />
* [[RTC/ru|часы реального времени]] (Real Time Clock);<br />
* управление питанием (Power management ([[APM/ru|APM]] и [[ACPI/ru|ACPI]]) позволяющие переводить компьютер в «спящий режим» или выключать его;<br />
* энергонезависимую память [[BIOS/ru|BIOS]] ([[CMOS/ru|CMOS]]) с независимым электропитанием от батареи, включающая небольшую по область памяти для хранения системных настроек;<br />
* звуковой контроллер (обычно [[AC97/ru|AC97]] или [[HDA/ru|Intel HDA]]).<br />
<br />
Опционально южный мост также может включать в себя контроллер Ethernet, RAID-контроллеры, контроллеры [[USB/ru|USB]], [[FireWire/ru|FireWire]] и [[Audio/ru|аудио-кодек]].<br />
<br />
Некоторые южные мосты также включают поддержку [[Keyboard/ru|клавиатуры]], [[Mouse/ru|мыши]] и [[Serial/ru|последовательных портов]]. Однако, на многих системных платах эти устройства подключены через другой чип — [[Super_IO/ru|Super I/O]] (контроллер ввода-вывода).<br />
<br />
Возникает резонный вопрос: если все эти электронные фишки такие разные, как вообще возможен нормальный старт компьютера и загрузка операционной системы - ведь никаких драйверов в этот момент еще нет, а каждое устройство по-своему уникально и нестандартно?<br />
<br />
Во-первых, кое-какая стандартизация всё-таки имеется. Пожалуй, главный и наиболее последовательный стандарт, общий для всех современных ПК-платформ - спецификация шины PCI, включающая единообразные средства идентификации, конфигурации и (в определенных рамках) диагностики устройств. Кроме него, имеется де-факто стандарт древней (legacy) архитектуры IBM PC/AT, низкоуровневая совместимость с которой до сих пор требуется от всех х86-платформ. <br />
<br />
Во-вторых, существует ряд спецификаций базовой системы ввода-вывода [[BIOS/ru|BIOS]], определяющих основные протоколы и структуры данных для работы с контроллерами устройств. После включения питания специальная программа POST (power-on self test) диагностирует и конфигурирует конкретное "железо" в соответствии с их требованиями; по завершении своей работы BIOS осуществляет загрузку операционной системы согласно ''BIOS Boot Specification''. <br />
<br />
Примитивный и медленный (но - надёжный и универсальный!) сервис BIOS в той или иной мере используется всеми операционными системами. Особенно велика его роль на этапе загрузки, пока ядро не успело обрасти драйверами и сконфигурировать свои собственные, быстрые и эффективные процедуры взаимодействия с имеющимся оборудованием. <br />
<br />
Зависимость КолибриОС от сервиса BIOS очень высока, а специализированные системные драйверы - пока очень немногочисленны.<br />
<br />
== Поддержка аппаратного обеспечения в KolibriOS ==<br />
<br />
Рассмотрим как же работает с оборудованием KolibriOS.<br />
<br />
=== Список оборудования ===<br />
'''Системные шины и интерфейсы передачи данных'''<br />
{| class="wikitable" border="1" <br />
! Шина/Интерфейс<br />
! Поддержка в KolibriOS<br />
! Примечания<br />
|-<br />
| PCI<br />
| Поддерживается ядром ОС<br />
(''/kernel/bus/pci32.inc'')<br />
| <br />
* пользователь имеет доступ к конфигурационному пространству PCI-устройств (в последующих версиях ОС этот небезопасный сервис будет ограничен) <br />
* есть возможность доступа к портам и "бортовой" MMIO-памяти устройств из пользовательского приложения (требуется перекомпиляция с раскомментированной первой строчкой в ''/kernel/bus/pci32.inc'' ) <br />
|-<br />
| PCI Express<br />
| В официальном ядре по умолчанию не поддерживается<br />
<br />
| <br />
* Настраивается BIOSом в режиме совместимости как обычная шина PCI.<br />
* Для AMD-процессоров реализовано автоопределение адреса расширенного конфигурационного пространства PCIe. Для других процессоров этот адрес можно установить вручную. В любом случае для активации сервиса требуется перекомпилировать ядро, включив в сборку ''kernel/bus/PCIe.inc'' и добавив в ядро (в восьмисотых-девятисотых строках ''kernel.asm'') вызов ''call pcie_ext_config''. <br />
* В экспериментальном ядре [[EmbeddedKOS/ru|Kolibri-A]] взаимодействие со всеми устройствами реализуется через PCIe-механизм, старый PCI-сервис эмулируется для совместимости.<br />
|-<br />
| PCI-X<br />
| Не поддерживается<br />
| Работает в режиме совместимости как шина PCI.<br />
|-<br />
| AGP<br />
| ограниченная поддержка<br />
| см. видеодрайвер ATIKMS<br />
|-<br />
| ISA<br />
| ?<br />
| <br />
|-<br />
| EISA<br />
| ?<br />
| <br />
|-<br />
| ASUS Media Bus<br />
| Не поддерживается<br />
| <br />
|-<br />
| SMBus или I2C<br />
| Не поддерживается<br />
| <br />
|-<br />
| LPC<br />
| Не поддерживается<br />
| <br />
|-<br />
| USB<br />
| Поддерживается драйвером<br />
| Только для UHCI<br />
|-<br />
| FireWire<br />
| Не поддерживается<br />
| <br />
|-<br />
| HyperTransport<br />
| Официальным ядром не поддерживается<br />
| ограниченная поддержка в [[EmbeddedKOS/ru|Kolibri-A]]<br />
|-<br />
| InfiniBand<br />
| Не поддерживается<br />
| <br />
|-<br />
| RapidIO<br />
| Не поддерживается<br />
| <br />
|-<br />
| Fibre Channel<br />
| Не поддерживается<br />
| <br />
|-<br />
| BlueTooth<br />
| Не поддерживается<br />
| <br />
|-<br />
| IrDA<br />
| Не поддерживается<br />
| <br />
|-<br />
| Wi-Fi<br />
| Не поддерживается<br />
| <br />
|-<br />
| WiGig<br />
| Не поддерживается<br />
| <br />
|-<br />
| Light Peak<br />
| Не поддерживается<br />
| <br />
|-<br />
| Digital Visual Interface<br />
| Не поддерживается<br />
| <br />
|-<br />
| DisplayPort<br />
| Не поддерживается<br />
| <br />
|-<br />
| HDMI<br />
| Не поддерживается<br />
| <br />
|}<br />
<br />
'''Порты'''<br />
{| class="wikitable" border="1" <br />
! Порт<br />
! Поддержка в KolibriOS<br />
|-<br />
| PS2<br />
| Поддерживается ядром ОС<br />
|-<br />
| COM<br />
| Поддерживается ядром ОС<br />
|-<br />
| LPT<br />
| Поддерживается ядром ОС<br />
|-<br />
| SPI<br />
| Не поддерживается<br />
|-<br />
| Game port<br />
| Не поддерживается<br />
|-<br />
| UHCI<br />
| Поддерживается драйвером<br />
|-<br />
| OHCI<br />
| Не поддерживается<br />
|-<br />
| EHCI<br />
| Не поддерживается<br />
|-<br />
| XHCI<br />
| Не поддерживается<br />
|}<br />
<br />
'''Устройства хранения информации'''<br />
{| class="wikitable" border="1" <br />
! Контроллер<br />
! Устройство<br />
! Поддержка в KolibriOS<br />
! Примечания<br />
|-<br />
|rowspan="3" | IDE (ATA)<br />
| FDD<br />
| Поддерживается ядром ОС<br />
| (см. /kernel/blkdev/flp_drv.inc)<br />
|-<br />
| CD/DVD<br />
| Поддерживается ядром ОС<br />
| (см. /kernel/blkdev/cd_drv.inc)<br />
|-<br />
| HDD<br />
| Поддерживается ядром ОС<br />
| (см. /kernel/blkdev/hd_drv.inc)<br />
|-<br />
|rowspan="2" | SATA<br />
| CD/DVD<br />
| Не поддерживается<br />
|rowspan="6" | В ряде случаев система может работать с SATA- и USB-дисками через BIOS Fn13h в виртуальном V86-режиме (скорость чтения/записи при этом оставляет желать лучшего).<br />
|-<br />
| HDD<br />
| Не поддерживается<br />
|-<br />
|rowspan="4" | USB<br />
| CD/DVD<br />
| Не поддерживается<br />
|-<br />
| SSD<br />
| Не поддерживается<br />
|-<br />
| FlashDrive<br />
| Не поддерживается<br />
|-<br />
| FlashCard<br />
| Не поддерживается<br />
|-<br />
| RAID<br />
| HDD<br />
| ?<br />
|<br />
|}<br />
<br />
'''Системные устройства'''<br />
{| class="wikitable" border="1" <br />
! Устройство<br />
! Поддержка в KolibriOS<br />
|-<br />
| Контроллер прерываний PIC<br />
| Поддерживается ядром ОС<br />
|-<br />
| Контроллер прерываний APIC<br />
| Поддерживается ядром ОС (по умолчанию код включен только в ветке Kolibri-ACPI)<br />
|-<br />
| Контроллер DMA<br />
| Поддерживается ядром ОС<br />
|-<br />
| Часы реального времени (Real Time Clock)<br />
| Поддерживается ядром ОС<br />
|-<br />
| Энергонезависимая память BIOS (CMOS)<br />
| Поддерживается ядром ОС<br />
|}<br />
<br />
'''Управление питанием'''<br />
{| class="wikitable" border="1" <br />
! Стандарт<br />
! Поддержка в KolibriOS<br />
|-<br />
| APM<br />
| Поддерживается ядром ОС<br />
|-<br />
| ACPI<br />
| Драйвером ACPICA (по умолчанию код включен в ветке Kolibri-ACPI)<br />
|}<br />
<br />
'''Аудио'''<br />
<br />
Поддерживается только аудио перечисленное в данной таблице.<br />
{| class="wikitable" border="1" <br />
! Стандарт<br />
! Производитель<br />
! Чипсет<br />
! Примечание<br />
|-<br />
|rowspan="22" | AC97<br />
|rowspan="7" | Intel Corporation<br />
| ICH0<br />
|rowspan="21" | Звуковой контроллер AC97 - поддерживается драйверами соответствующих устройств. Поскольку AC97 стандарт стандартизует только функции кодека и AC-Link, отвечающего за взаимодействие контроллера и кодека, то для различных контроллеров AC97 требуются разные драйвера.<br />
|-<br />
| ICH1<br />
|-<br />
| ICH2<br />
|-<br />
| ICH3<br />
|-<br />
| ICH4<br />
|-<br />
| ICH5<br />
|-<br />
| ICH6<br />
|-<br />
|rowspan="5" | NVidia<br />
| NForce<br />
|-<br />
| NForce2<br />
|-<br />
| NForce3<br />
|-<br />
| NForce4<br />
|-<br />
| NForce500<br />
|-<br />
| Silicon Integrated Systems<br />
| SIS7012<br />
|-<br />
| ForteMedia<br />
| FM801<br />
|-<br />
|rowspan="7" | VIA Technologies<br />
| VT8231<br />
|-<br />
| VT8233<br />
|-<br />
| VT8233C<br />
|-<br />
| VT8235<br />
|-<br />
| VT8237<br />
|-<br />
| VT8237R<br />
|-<br />
| VT8237R Plus<br />
|-<br />
|-<br />
| Creative<br />
| EMU10K1X<br />
| Находится не на материнской плате компьютера, а на отдельной аудиокарте, которая вставляется в слот расширения PCI<br />
|-<br />
| HDA<br />
| <br />
| <br />
| Системой пока не поддерживается, работа над драйвером ведётся в настоящее время.<br />
|-<br />
|rowspan="3" | SB16<br />
|rowspan="3" | Creative<br />
| SoundBlaster16<br />
|rowspan="3" | Находится не на материнской плате компьютера, а на отдельной аудиокарте, которая вставляется в слот расширения ISA<br />
|-<br />
| SoundBlaster16 ASP<br />
|-<br />
| SoundBlaster16 PnP<br />
|}<br />
<br />
'''Видео'''<br />
{| class="wikitable" border="1" <br />
! Производитель(Стандарт)<br />
! Поддержка в KolibriOS<br />
! Примечания<br />
|-<br />
| VESA<br />
| Поддерживается ядром ОС<br />
| Поддерживается абсолютным большинством современных компьютеров.<br />
|-<br />
| VGA<br />
| Поддерживается ядром ОС<br />
| <br />
|-<br />
| AMD<br />
| Драйвером для всех моделей ATI Radeon.<br />
| Поддерживаются аппаратный курсор мыши, смена видеорежимов и акселерация двумерной графики.<br />
|-<br />
| NVidia<br />
| Не поддерживается<br />
| <br />
|-<br />
| Intel<br />
| Не поддерживается<br />
| <br />
|-<br />
| VIA<br />
| Не поддерживается<br />
| <br />
|}<br />
<br />
'''Сетевые контроллеры'''<br />
В настоящее время контроллеры Ethernet поддерживаются драйверами в составе ядра ОС,<br> но ведётся активная работа по выносу кода в динамически подгружаемые драйвера<br> и созданию нового сетевого стека в рамках Net ветки KolibriOS.<br />
В данной таблице перечислены сетевые контроллеры, поддерживаемые системой в настоящее время.<br />
{| class="wikitable" border="1" <br />
! Производитель<br />
! Устройство<br />
! Примечания<br />
|-<br />
|rowspan="13" | 3Com Corporation<br />
| 3c59x<br />
|<br />
|-<br />
| 3c900 <br />
|<br />
|-<br />
| 3c905<br />
|<br />
|-<br />
| 3c980<br />
|<br />
|-<br />
| 3cSOHO100<br />
|<br />
|-<br />
| 3c555<br />
|<br />
|-<br />
| 3c556<br />
|<br />
|-<br />
| 3c595<br />
|<br />
|-<br />
| 3c575<br />
|<br />
|-<br />
| 3cCFE575BT<br />
|<br />
|-<br />
| 3cCFE575CT<br />
|<br />
|-<br />
| 3cCFE656<br />
|<br />
|-<br />
| 3c450<br />
|<br />
|-<br />
|rowspan="4" | Realtek Semiconductor Co., Ltd.<br />
| rtl8029 <br />
| RTL-8029(AS)<br />
|-<br />
| rtl8139 <br />
| RTL-8139/8139C/8139C+, RT8139 (B/C) Cardbus Fast Ethernet Adapter<br />
|-<br />
| rtl8168 <br />
| RTL8111/8168B PCI Express Gigabit Ethernet controller (rtl8169) <br />
|-<br />
| rtl8169 <br />
| RTL-8169 Gigabit Ethernet, RTL-8110SC/8169SC Gigabit Ethernet<br />
|-<br />
| Accton Technology Corporation<br />
| SMC2-1211TX <br />
| (rtl8139)<br />
|-<br />
| DELTA Electronics, Inc<br />
| RTL81xx <br />
| RealTek Ethernet (rtl8139)<br />
|-<br />
| Addtron Technology Co, Inc.<br />
| RTL8139 <br />
| Ethernet (rtl8139)<br />
|-<br />
|rowspan="3" | D-Link System Inc<br />
| RTL8139 Ethernet <br />
| (rtl8139)<br />
|-<br />
| DGE-528T <br />
| Gigabit Ethernet Adapter (rtl8169)<br />
|-<br />
| DFE-690TXD <br />
| CardBus PC Card (rtl8139)<br />
|-<br />
| Abocom Systems Inc<br />
| RTL8139 (FE2000VX) <br />
| CardBus Fast Ethernet Attached Port Adapter (rtl8139)<br />
|-<br />
| Allied Telesyn International<br />
| RTL81xx <br />
| Fast Ethernet (rtl8139)<br />
|-<br />
|rowspan="2" | Planex Communications, Inc<br />
| FNW-3603-TX <br />
| CardBus Fast Ethernet (rtl8139)<br />
|-<br />
| RTL81xx <br />
| RealTek Ethernet (rtl8139)<br />
|-<br />
| Sega Enterprises Ltd<br />
| RTL81xx <br />
| Fast Ethernet (rtl8139)<br />
|-<br />
| Edimax Computer Co.<br />
| RTL81xx <br />
| Fast Ethernet (rtl8139)<br />
|-<br />
| SpeedStream<br />
| 1012 PCMCIA 10/100 Ethernet Card (RTL81xx) <br />
| (rtl8139)<br />
|-<br />
| LevelOne<br />
| FPC-0106TX misprogrammed (RTL81xx) <br />
| (rtl8139)<br />
|-<br />
| Northern Telecom<br />
| 10/100BaseTX (RTL81xx) <br />
| (rtl8139)<br />
|-<br />
| Peppercon AG<br />
| ROL/F-100 Fast Ethernet Adapter with ROL <br />
| (rtl8139)<br />
|-<br />
| Compaq Computer Corporation<br />
| HNE-300 <br />
| (RealTek RTL8139c) (iPaq Networking) (rtl8139)<br />
|-<br />
| U.S. Robotics<br />
| USR997902 <br />
| 10/100/1000 Mbps PCI Network Card (rtl8169)<br />
|-<br />
|rowspan="2" | Intel Corporation<br />
| i8255x<br />
|<br />
|-<br />
| i82801<br />
| <br />
|-<br />
|rowspan="2" | Silicon Integrated Systems <br />
| SIS900<br />
| <br />
|-<br />
| SIS7016<br />
|<br />
|-<br />
|rowspan="2" | AMD<br />
| 79c970<br />
| pcnet32 (PCnet32 LANCE)<br />
|-<br />
| 79c978 <br />
| pcnet32 (HomePNA)<br />
|-<br />
|rowspan="16" | NVidia<br />
| NForce<br />
| <br />
|-<br />
| NForce2<br />
| <br />
|-<br />
| NForce3<br />
| <br />
|-<br />
| MCP2A<br />
| <br />
|-<br />
| CK8S<br />
| <br />
|-<br />
| CK804<br />
| <br />
|-<br />
| MCP04<br />
| <br />
|-<br />
| MCP51<br />
| <br />
|-<br />
| MCP55<br />
| <br />
|-<br />
| MCP61<br />
| <br />
|-<br />
| MCP65<br />
| <br />
|-<br />
| MCP67<br />
| <br />
|-<br />
| MCP73<br />
| <br />
|-<br />
| MCP77<br />
| <br />
|-<br />
| MCP79<br />
| <br />
|-<br />
| MCP89<br />
| <br />
|-<br />
|}<br />
<br />
<br />
'''Устройства ввода'''<br />
{| class="wikitable" border="1" <br />
! Тип устройства<br />
! Устройство<br />
! Поддержка в KolibriOS<br />
|-<br />
|rowspan="4" | Устройства ввода графической информации<br />
| Сканер <br />
| Не поддерживается<br />
|-<br />
| Видео- и Веб-камера <br />
| Не поддерживается<br />
|-<br />
| Цифровой фотоаппарат<br />
| Не поддерживается<br />
|-<br />
| Плата видеозахвата<br />
| Не поддерживается<br />
|-<br />
|rowspan="3" | Устройства ввода звука<br />
| Микрофон<br />
| Не поддерживается<br />
|-<br />
| Цифровой диктофон<br />
| Не поддерживается<br />
|-<br />
| Модем <br />
| Поддерживается ядром ОС<br />
|-<br />
|rowspan="2" | Устройства ввода текстовой информации<br />
| Клавиатура (PS/2) <br />
| Поддерживается ядром ОС<br />
|-<br />
| Клавиатура (USB)<br />
| Не поддерживается<br />
|-<br />
|rowspan="8" | Указательные (координатные) устройства с относительным указанием позиции (перемещения)<br />
| Мышь (PS/2)<br />
| Поддерживается ядром ОС<br />
|-<br />
| Мышь (Com)<br />
| Поддерживается драйвером<br />
|-<br />
| Мышь (USB)<br />
| Поддерживается драйвером<br />
|-<br />
| Тачпад <br />
| Поддерживается ядром ОС в режиме эмуляции мыши (PS/2)<br />
|-<br />
| Трекбол<br />
| ?<br />
|-<br />
| Трекпоинт <br />
| ?<br />
|-<br />
| Джойстик (LPT) <br />
| Поддерживается драйвером<br />
|-<br />
| Джойстик (USB) <br />
| Не поддерживается<br />
|-<br />
|rowspan="2" | Указательные (координатные) устройства с возможностью указания абсолютной позиции<br />
| Графический планшет<br />
| Не поддерживается<br />
|-<br />
| Световое перо<br />
| Не поддерживается<br />
|-<br />
|rowspan="4" | Игровые устройства ввода<br />
| Педаль<br />
| Не поддерживается<br />
|-<br />
| Геймпад<br />
| Не поддерживается<br />
|-<br />
| Руль<br />
| Не поддерживается<br />
|-<br />
| Рычаг для симуляторов полёта<br />
| Не поддерживается<br />
|-<br />
| Устройства ввода общего назначения<br />
| Сенсорный экран <br />
| Не поддерживается<br />
|}<br />
<br />
'''Устройства вывода'''<br />
{| class="wikitable" border="1" <br />
! Тип устройства<br />
! Устройство<br />
! Поддержка в KolibriOS<br />
|-<br />
|rowspan="4" | Устройства вывода графической информации<br />
| Монитор (дисплей)<br />
| Поддерживаются видеодрайверами<br />
|-<br />
| Проектор <br />
| Не поддерживается<br />
|-<br />
| Принтер <br />
| Не поддерживается<br />
|-<br />
| Графопостроитель <br />
| Не поддерживается<br />
|-<br />
|rowspan="3" | Устройства для вывода звука<br />
| Встроенный динамик <br />
| Поддерживается ядром ОС, также есть драйвер работающий с [[HAL]] - драйвером [[Infinity]].<br />
|-<br />
| Колонки <br />
| Поддерживаются аудиодрайверами<br />
|-<br />
| Наушники <br />
| Поддерживаются аудиодрайверами.<br />
|}<br />
<br />
=== Ресурсы предоставляемые системой для контроля оборудования ===<br />
<br />
<!--Asper: Write in this section about mmio, memory range, IRQ etc. resources that are used to control hardware and how it can be accessed in KolibriOS --><br />
<br />
Для контроля оборудования используются обработчики аппаратных прерываний ('''IRQ'''), '''порты''' ввода/вывода и '''MMIO''' (memory-mapped IO или "отображённые на память зоны ввода-вывода"), которые BIOS выделил для конкретного оборудования. Поскольку у каждого системного устройства имеется свой уникальный адрес на шине PCI, то и доступ к ним разумно осуществлять через эту шину. Следует заметить, что новый стандарт системной шины ''PCI Express'' совместим "с верху вниз" с PCI, что позволяет проводить детектирование и базовый контроль ввода-вывода PCIe-устройств помощью стандартного сервиса PCI КолибриОС.<br />
<br />
Как уже отмечалось, PCI устройства могут существенно отличаться друг от друга по используемым ресурсам и методам инициализации оборудования. Тем не менее, часть программно-доступных ресурсов является стандартной для всех устройств, что и позволяет точно идентифицировать имеющееся оборудование на шине. Прежде всего PCI устройство необходимо найти на шине, зайти в его [[PCI_config/ru|конфигурационное пространство]] и обязательно проверить совпадение его вендора/версии с имеющимся шаблоном (иначе наш драйвер начнёт рулить каким-то совсем другим железом!), после чего можно приступать к диагностике и тонкой настройке режимов работы, подготавливая устройство для дальнейшей работы. Пример поиска оборудования на шине PCI см. в файле /drivers/sceleton.asm, этот файл является базой для многих новых драйверов.<br />
<br />
Системой пока поддерживается только древний контроллер прерываний PIC, имеющий всего 16 линий запроса, при этом многие линии уже зарезервированы ядром. Важно, что на один IRQ-запрос в текущей версии Колибри можно повесить только один обработчик. Таким образом, если прерывание уже используется каким-то другим устройством, то для обеспечения корректной работы нужно либо разработать общий драйвер для конфликтующих устройств(!!), либо вручную переназначить номер IRQ, использовав ещё не занятую линию (обычно BIOS позволяет это разрулить через setup-меню).<br />
<br />
Адреса поротов ввода-вывода и диапазонов MMIO содержатся в регистрах BAR0-BAR5 конфигурационного пространства PCI-устройства. Системный программист может узнать эти адреса только прочитав BAR-регистры: из драйвера - с помощью ''pci_read_reg'' (bus/pci/pci32.inc), из пользовательской программы - вызвав подфункцию 6 сисфункции 62. <br />
Чем отличаются порты от MMIO-памяти? Принципиально - ничем. И то, и другое служит для доступа к информационным шлюзам, связывающим ЦП с внешним миром. Есть некоторые нюансы электронной организации таких шлюзов (однотипные регистровые блоки имеет смысл упаковывать в MMIO, а уникальные - хранить в отдельных портах), но программисту можно этим не заморачиваться: с точки зрения программирования вся разница между этими ресурсами - в способе чтения и записи данных '''in/out''' для портов и '''mov''' для '''mmio'''.<br />
<br />
== Что необходимо для того, чтобы написать драйвер ==<br />
<br />
Больше всего потребуется непреклонное желание добиться поставленной цели не смотря ни на какие сложности возникающие по ходу работы, это может быть основное, что вам понадобиться, как в принципе и при решении любой другой задачи.<br />
Кроме этого вам необходимо:<br />
* Прочитать статью [[Writing_drivers_for_KolibriOS/ru|"Пишем драйвер для КолибриОС"]]. В статье говорится о написании драйверов в формате MS COFF.<br> Кроме этого система позволяет писать драйвера в формате PE. Также для сведения, в рамках ветки Kolibri-ACPI создается новая драйверная архитектура ([http://board.kolibrios.org/viewtopic.php?f=3&t=1571 тема на форуме]).<br />
* Достать спецификацию (datasheet) на конкретный Южный Мост и/или конкретное устройство на которое пишется драйвер.<br> Например [http://board.kolibrios.org/viewtopic.php?f=3&t=1545 на форуме KolibriOS].<br />
* Если уже существуют в Колибри драйвера аналогичных устройств, то неплохо было бы почитать их код (посмотреть "как это делается")<br />
* Очень желательно смотреть исходный код драйверов нужного устройства для других ОС для понимания в общем и целом способов управления устройством<br />
* Уметь искать необходимую для разработки информацию, чем больше полезной информации тем лучше<br />
* Не будет лишним также общаться с другими разработчиками драйвером, в случае возникновения сложных вопросов<br />
* Для просмотра списка устройств и их параметров на шине PCI, в Колибри есть специальное приложение '''pcidev'''. К примеру если устройство на которое вы пишете драйвер не может получить IRQ в своё монопольное распоряжение, то можно посмотреть какое ещё устройство получило это прерывание, чтобы исправить ситуацию.<br />
<br />
[[Category:Системная документация]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Hardware_Support/ru&diff=3105Hardware Support/ru2010-11-02T23:52:16Z<p>Art zh: /* Список оборудования */</p>
<hr />
<div>KolibriOS частично обеспечивает поддержку оборудования персонального компьютера. Часть оборудования поддерживается ядром ОС, часть динамически загружаемыми драйверами, мало того система предоставляет возможность прямого доступа к оборудованию прямо из пользовательского режима! Т.е. вы можете написать программу, которая сможет работать с оборудованием используя соответсвующий системный сервис. Правда этот подход лучше использовать исключительно в отладочных или исследовательских целях, а для "нормальной" поддержки оборудования всё-таки писать драйвера. Также нужно понимать, что существуют два вида драйверов: <br />
* Драйвер являющейся частью ядра, т.е. весь его код может находиться в отдельном модуле, но после компиляции ядра он станет частью кода ядра системы (например: hd_drv.inc).<br />
* Драйвер динамически подгружаемый в адресное пространство ядра уже после загрузки системы (например: sound.asm), эти драйвера находятся в специальной системной директории (/rd/1/drivers/).<br />
<br />
== Состав аппаратного обеспечения ПК ==<br />
<br />
Итак из чего же состоит компьютер? Большинство пользователей, вспомнив уроки информатики, тут же назовут: системный блок, монитор, клавиатура, мышь. Многие подумав добавят HDD, CD/DVD, Floppy приводы, видео, аудио и сетевую карты. А если заглянуть поглубже? <br />
<br />
В системном блоке основным элементом является материнская плата, а на ней находится сердце компьютера - центральный процессор (ЦПУ) и оперативная память (ОП). Программиста же решившего написать драйвер для поддержки какого-то устройства в KolibriOS, больше всего заинтересует Южный Мост, чип где сходятся большинство ниточек, контролирующих оборудование. <br />
Существует также Северный Мост, посредством которого Южный Мост и связан с ЦПУ и ОП, но его мы пока подробно рассматривать не будем ввиду его небольшой функциональности с точки зрения программиста.<br />
<br />
== Компоненты южного моста ==<br />
<br />
Большинство устройств представлены в Южном Мосту в качестве так называемых ''контроллеров'' - программно-доступных электронных блоков, управляющих работой конкретного оборудования. Из-за огромного разнообразия, многофункциональности и слабой стандартизации современного компьютерного "железа", каждому такому контроллеру требуется уникальный ''драйвер'' - специальная системная программа, обеспечивающая инициализацию, конфигурирование, эффективное управление оборудованием в реальной системной среде, и (самое главное!-) быстрый и надежный ввод/вывод потоков информации через данное устройство. <br />
<br />
<!-- Asper: This information mainly from http://ru.wikipedia.org/wiki/Southbridge page.--><br />
Функционально южный мост включает в себя:<br />
* стандартный контроллер шины [[PCI/ru|PCI]];<br />
* контроллер шины [[PCI_Express/ru|PCI Express]];<br />
* шина [[ISA/ru|ISA]], которая используется достаточно редко, но тем не менее остается неотъемлемой частью любого южного моста. <br />
* контроллер шины SMBus или [[I2C]] для связи с другими устройствами на материнской плате (например, для управления вентиляторами);<br />
* [[DMA/ru|DMA]] контроллер с поддержкой древних [[ISA/ru|ISA]] и [[LPC/ru|LPC]]-протоколов прямого доступа к [[RAM/ru|оперативной памяти]] без участия ЦПУ;<br />
* контроллеры прерываний: старый [[PIC/ru|PIC]] и "продвинутый" [[APIC/ru|APIC]];<br />
* [[ATA/ru|ATA]] (IDE) и [[SATA/ru|SATA]] контроллеры;<br />
* контроллер шины LPC для передачи данных и управления [[SIO/ru|SIO]] (это такие устройства, как клавиатура, мышь, [[параллельный порт|параллельный]], [[последовательный порт]], [[инфракрасный порт]] и флоппи-контроллер) и [[BIOS/ru|BIOS]] ROM ([[FlashROM/ru|флэш]]);<br />
* [[RTC/ru|часы реального времени]] (Real Time Clock);<br />
* управление питанием (Power management ([[APM/ru|APM]] и [[ACPI/ru|ACPI]]) позволяющие переводить компьютер в «спящий режим» или выключать его;<br />
* энергонезависимую память [[BIOS/ru|BIOS]] ([[CMOS/ru|CMOS]]) с независимым электропитанием от батареи, включающая небольшую по область памяти для хранения системных настроек;<br />
* звуковой контроллер (обычно [[AC97/ru|AC97]] или [[HDA/ru|Intel HDA]]).<br />
<br />
Опционально южный мост также может включать в себя контроллер Ethernet, RAID-контроллеры, контроллеры [[USB/ru|USB]], [[FireWire/ru|FireWire]] и [[Audio/ru|аудио-кодек]].<br />
<br />
Некоторые южные мосты также включают поддержку [[Keyboard/ru|клавиатуры]], [[Mouse/ru|мыши]] и [[Serial/ru|последовательных портов]]. Однако, на многих системных платах эти устройства подключены через другой чип — [[Super_IO/ru|Super I/O]] (контроллер ввода-вывода).<br />
<br />
Возникает резонный вопрос: если все эти электронные фишки такие разные, как вообще возможен нормальный старт компьютера и загрузка операционной системы - ведь никаких драйверов в этот момент еще нет, а каждое устройство по-своему уникально и нестандартно?<br />
<br />
Во-первых, кое-какая стандартизация всё-таки имеется. Пожалуй, главный и наиболее последовательный стандарт, общий для всех современных ПК-платформ - спецификация шины PCI, включающая единообразные средства идентификации, конфигурации и (в определенных рамках) диагностики устройств. Кроме него, имеется де-факто стандарт древней (legacy) архитектуры IBM PC/AT, низкоуровневая совместимость с которой до сих пор требуется от всех х86-платформ. <br />
<br />
Во-вторых, существует ряд спецификаций базовой системы ввода-вывода [[BIOS/ru|BIOS]], определяющих основные протоколы и структуры данных для работы с контроллерами устройств. После включения питания специальная программа POST (power-on self test) диагностирует и конфигурирует конкретное "железо" в соответствии с их требованиями; по завершении своей работы BIOS осуществляет загрузку операционной системы согласно ''BIOS Boot Specification''. <br />
<br />
Примитивный и медленный (но - надёжный и универсальный!) сервис BIOS в той или иной мере используется всеми операционными системами. Особенно велика его роль на этапе загрузки, пока ядро не успело обрасти драйверами и сконфигурировать свои собственные, быстрые и эффективные процедуры взаимодействия с имеющимся оборудованием. <br />
<br />
Зависимость КолибриОС от сервиса BIOS очень высока, а специализированные системные драйверы - пока очень немногочисленны.<br />
<br />
== Поддержка аппаратного обеспечения в KolibriOS ==<br />
<br />
Рассмотрим как же работает с оборудованием KolibriOS.<br />
<br />
=== Список оборудования ===<br />
'''Системные шины и интерфейсы передачи данных'''<br />
{| class="wikitable" border="1" <br />
! Шина/Интерфейс<br />
! Поддержка в KolibriOS<br />
! Примечания<br />
|-<br />
| PCI<br />
| Поддерживается ядром ОС<br />
(''/kernel/bus/pci32.inc'')<br />
| <br />
* пользователь имеет доступ к конфигурационному пространству PCI-устройств (в последующих версиях ОС этот небезопасный сервис будет ограничен) <br />
* есть возможность доступа к портам и "бортовой" MMIO-памяти устройств из пользовательского приложения (требуется перекомпиляция с раскомментированной первой строчкой в ''/kernel/bus/pci32.inc'' ) <br />
|-<br />
| PCI Express<br />
| В официальном ядре по умолчанию не поддерживается<br />
<br />
| <br />
* Настраивается BIOSом в режиме совместимости как обычная шина PCI.<br />
* Для AMD-процессоров реализовано автоопределение адреса расширенного конфигурационного пространства PCIe. Для других процессоров этот адрес можно установить вручную. В любом случае для активации сервиса требуется перекомпилировать ядро, включив в сборку ''kernel/bus/PCIe.inc'' и добавив в ядро (в восьмисотых-девятисотых строках ''kernel.asm'') вызов ''call pcie_ext_config''. <br />
* В экспериментальном ядре [[Kolibri-A|EmbeddedKOS/ru]] взаимодействие со всеми устройствами реализуется через PCIe-механизм, старый PCI-сервис эмулируется для совместимости.<br />
|-<br />
| PCI-X<br />
| Не поддерживается<br />
| Работает в режиме совместимости как шина PCI.<br />
|-<br />
| AGP<br />
| ограниченная поддержка<br />
| см. видеодрайвер ATIKMS<br />
|-<br />
| ISA<br />
| ?<br />
| <br />
|-<br />
| EISA<br />
| ?<br />
| <br />
|-<br />
| ASUS Media Bus<br />
| Не поддерживается<br />
| <br />
|-<br />
| SMBus или I2C<br />
| Не поддерживается<br />
| <br />
|-<br />
| LPC<br />
| Не поддерживается<br />
| <br />
|-<br />
| USB<br />
| Поддерживается драйвером<br />
| Только для UHCI<br />
|-<br />
| FireWire<br />
| Не поддерживается<br />
| <br />
|-<br />
| HyperTransport<br />
| Официальным ядром не поддерживается<br />
| ограниченная поддержка в [[Kolibri-A|EmbeddedKOS/ru]]<br />
|-<br />
| InfiniBand<br />
| Не поддерживается<br />
| <br />
|-<br />
| RapidIO<br />
| Не поддерживается<br />
| <br />
|-<br />
| Fibre Channel<br />
| Не поддерживается<br />
| <br />
|-<br />
| BlueTooth<br />
| Не поддерживается<br />
| <br />
|-<br />
| IrDA<br />
| Не поддерживается<br />
| <br />
|-<br />
| Wi-Fi<br />
| Не поддерживается<br />
| <br />
|-<br />
| WiGig<br />
| Не поддерживается<br />
| <br />
|-<br />
| Light Peak<br />
| Не поддерживается<br />
| <br />
|-<br />
| Digital Visual Interface<br />
| Не поддерживается<br />
| <br />
|-<br />
| DisplayPort<br />
| Не поддерживается<br />
| <br />
|-<br />
| HDMI<br />
| Не поддерживается<br />
| <br />
|}<br />
<br />
'''Порты'''<br />
{| class="wikitable" border="1" <br />
! Порт<br />
! Поддержка в KolibriOS<br />
|-<br />
| PS2<br />
| Поддерживается ядром ОС<br />
|-<br />
| COM<br />
| Поддерживается ядром ОС<br />
|-<br />
| LPT<br />
| Поддерживается ядром ОС<br />
|-<br />
| SPI<br />
| Не поддерживается<br />
|-<br />
| Game port<br />
| Не поддерживается<br />
|-<br />
| UHCI<br />
| Поддерживается драйвером<br />
|-<br />
| OHCI<br />
| Не поддерживается<br />
|-<br />
| EHCI<br />
| Не поддерживается<br />
|-<br />
| XHCI<br />
| Не поддерживается<br />
|}<br />
<br />
'''Устройства хранения информации'''<br />
{| class="wikitable" border="1" <br />
! Контроллер<br />
! Устройство<br />
! Поддержка в KolibriOS<br />
! Примечания<br />
|-<br />
|rowspan="3" | IDE (ATA)<br />
| FDD<br />
| Поддерживается ядром ОС<br />
| (см. /kernel/blkdev/flp_drv.inc)<br />
|-<br />
| CD/DVD<br />
| Поддерживается ядром ОС<br />
| (см. /kernel/blkdev/cd_drv.inc)<br />
|-<br />
| HDD<br />
| Поддерживается ядром ОС<br />
| (см. /kernel/blkdev/hd_drv.inc)<br />
|-<br />
|rowspan="2" | SATA<br />
| CD/DVD<br />
| Не поддерживается<br />
|rowspan="6" | В ряде случаев система может работать с SATA- и USB-дисками через BIOS Fn13h в виртуальном V86-режиме (скорость чтения/записи при этом оставляет желать лучшего).<br />
|-<br />
| HDD<br />
| Не поддерживается<br />
|-<br />
|rowspan="4" | USB<br />
| CD/DVD<br />
| Не поддерживается<br />
|-<br />
| SSD<br />
| Не поддерживается<br />
|-<br />
| FlashDrive<br />
| Не поддерживается<br />
|-<br />
| FlashCard<br />
| Не поддерживается<br />
|-<br />
| RAID<br />
| HDD<br />
| ?<br />
|<br />
|}<br />
<br />
'''Системные устройства'''<br />
{| class="wikitable" border="1" <br />
! Устройство<br />
! Поддержка в KolibriOS<br />
|-<br />
| Контроллер прерываний PIC<br />
| Поддерживается ядром ОС<br />
|-<br />
| Контроллер прерываний APIC<br />
| Поддерживается ядром ОС (по умолчанию код включен только в ветке Kolibri-ACPI)<br />
|-<br />
| Контроллер DMA<br />
| Поддерживается ядром ОС<br />
|-<br />
| Часы реального времени (Real Time Clock)<br />
| Поддерживается ядром ОС<br />
|-<br />
| Энергонезависимая память BIOS (CMOS)<br />
| Поддерживается ядром ОС<br />
|}<br />
<br />
'''Управление питанием'''<br />
{| class="wikitable" border="1" <br />
! Стандарт<br />
! Поддержка в KolibriOS<br />
|-<br />
| APM<br />
| Поддерживается ядром ОС<br />
|-<br />
| ACPI<br />
| Драйвером ACPICA (по умолчанию код включен в ветке Kolibri-ACPI)<br />
|}<br />
<br />
'''Аудио'''<br />
<br />
Поддерживается только аудио перечисленное в данной таблице.<br />
{| class="wikitable" border="1" <br />
! Стандарт<br />
! Производитель<br />
! Чипсет<br />
! Примечание<br />
|-<br />
|rowspan="22" | AC97<br />
|rowspan="7" | Intel Corporation<br />
| ICH0<br />
|rowspan="21" | Звуковой контроллер AC97 - поддерживается драйверами соответствующих устройств. Поскольку AC97 стандарт стандартизует только функции кодека и AC-Link, отвечающего за взаимодействие контроллера и кодека, то для различных контроллеров AC97 требуются разные драйвера.<br />
|-<br />
| ICH1<br />
|-<br />
| ICH2<br />
|-<br />
| ICH3<br />
|-<br />
| ICH4<br />
|-<br />
| ICH5<br />
|-<br />
| ICH6<br />
|-<br />
|rowspan="5" | NVidia<br />
| NForce<br />
|-<br />
| NForce2<br />
|-<br />
| NForce3<br />
|-<br />
| NForce4<br />
|-<br />
| NForce500<br />
|-<br />
| Silicon Integrated Systems<br />
| SIS7012<br />
|-<br />
| ForteMedia<br />
| FM801<br />
|-<br />
|rowspan="7" | VIA Technologies<br />
| VT8231<br />
|-<br />
| VT8233<br />
|-<br />
| VT8233C<br />
|-<br />
| VT8235<br />
|-<br />
| VT8237<br />
|-<br />
| VT8237R<br />
|-<br />
| VT8237R Plus<br />
|-<br />
|-<br />
| Creative<br />
| EMU10K1X<br />
| Находится не на материнской плате компьютера, а на отдельной аудиокарте, которая вставляется в слот расширения PCI<br />
|-<br />
| HDA<br />
| <br />
| <br />
| Системой пока не поддерживается, работа над драйвером ведётся в настоящее время.<br />
|-<br />
|rowspan="3" | SB16<br />
|rowspan="3" | Creative<br />
| SoundBlaster16<br />
|rowspan="3" | Находится не на материнской плате компьютера, а на отдельной аудиокарте, которая вставляется в слот расширения ISA<br />
|-<br />
| SoundBlaster16 ASP<br />
|-<br />
| SoundBlaster16 PnP<br />
|}<br />
<br />
'''Видео'''<br />
{| class="wikitable" border="1" <br />
! Производитель(Стандарт)<br />
! Поддержка в KolibriOS<br />
! Примечания<br />
|-<br />
| VESA<br />
| Поддерживается ядром ОС<br />
| Поддерживается абсолютным большинством современных компьютеров.<br />
|-<br />
| VGA<br />
| Поддерживается ядром ОС<br />
| <br />
|-<br />
| AMD<br />
| Драйвером для всех моделей ATI Radeon.<br />
| Поддерживаются аппаратный курсор мыши, смена видеорежимов и акселерация двумерной графики.<br />
|-<br />
| NVidia<br />
| Не поддерживается<br />
| <br />
|-<br />
| Intel<br />
| Не поддерживается<br />
| <br />
|-<br />
| VIA<br />
| Не поддерживается<br />
| <br />
|}<br />
<br />
'''Сетевые контроллеры'''<br />
В настоящее время контроллеры Ethernet поддерживаются драйверами в составе ядра ОС,<br> но ведётся активная работа по выносу кода в динамически подгружаемые драйвера<br> и созданию нового сетевого стека в рамках Net ветки KolibriOS.<br />
В данной таблице перечислены сетевые контроллеры, поддерживаемые системой в настоящее время.<br />
{| class="wikitable" border="1" <br />
! Производитель<br />
! Устройство<br />
! Примечания<br />
|-<br />
|rowspan="13" | 3Com Corporation<br />
| 3c59x<br />
|<br />
|-<br />
| 3c900 <br />
|<br />
|-<br />
| 3c905<br />
|<br />
|-<br />
| 3c980<br />
|<br />
|-<br />
| 3cSOHO100<br />
|<br />
|-<br />
| 3c555<br />
|<br />
|-<br />
| 3c556<br />
|<br />
|-<br />
| 3c595<br />
|<br />
|-<br />
| 3c575<br />
|<br />
|-<br />
| 3cCFE575BT<br />
|<br />
|-<br />
| 3cCFE575CT<br />
|<br />
|-<br />
| 3cCFE656<br />
|<br />
|-<br />
| 3c450<br />
|<br />
|-<br />
|rowspan="4" | Realtek Semiconductor Co., Ltd.<br />
| rtl8029 <br />
| RTL-8029(AS)<br />
|-<br />
| rtl8139 <br />
| RTL-8139/8139C/8139C+, RT8139 (B/C) Cardbus Fast Ethernet Adapter<br />
|-<br />
| rtl8168 <br />
| RTL8111/8168B PCI Express Gigabit Ethernet controller (rtl8169) <br />
|-<br />
| rtl8169 <br />
| RTL-8169 Gigabit Ethernet, RTL-8110SC/8169SC Gigabit Ethernet<br />
|-<br />
| Accton Technology Corporation<br />
| SMC2-1211TX <br />
| (rtl8139)<br />
|-<br />
| DELTA Electronics, Inc<br />
| RTL81xx <br />
| RealTek Ethernet (rtl8139)<br />
|-<br />
| Addtron Technology Co, Inc.<br />
| RTL8139 <br />
| Ethernet (rtl8139)<br />
|-<br />
|rowspan="3" | D-Link System Inc<br />
| RTL8139 Ethernet <br />
| (rtl8139)<br />
|-<br />
| DGE-528T <br />
| Gigabit Ethernet Adapter (rtl8169)<br />
|-<br />
| DFE-690TXD <br />
| CardBus PC Card (rtl8139)<br />
|-<br />
| Abocom Systems Inc<br />
| RTL8139 (FE2000VX) <br />
| CardBus Fast Ethernet Attached Port Adapter (rtl8139)<br />
|-<br />
| Allied Telesyn International<br />
| RTL81xx <br />
| Fast Ethernet (rtl8139)<br />
|-<br />
|rowspan="2" | Planex Communications, Inc<br />
| FNW-3603-TX <br />
| CardBus Fast Ethernet (rtl8139)<br />
|-<br />
| RTL81xx <br />
| RealTek Ethernet (rtl8139)<br />
|-<br />
| Sega Enterprises Ltd<br />
| RTL81xx <br />
| Fast Ethernet (rtl8139)<br />
|-<br />
| Edimax Computer Co.<br />
| RTL81xx <br />
| Fast Ethernet (rtl8139)<br />
|-<br />
| SpeedStream<br />
| 1012 PCMCIA 10/100 Ethernet Card (RTL81xx) <br />
| (rtl8139)<br />
|-<br />
| LevelOne<br />
| FPC-0106TX misprogrammed (RTL81xx) <br />
| (rtl8139)<br />
|-<br />
| Northern Telecom<br />
| 10/100BaseTX (RTL81xx) <br />
| (rtl8139)<br />
|-<br />
| Peppercon AG<br />
| ROL/F-100 Fast Ethernet Adapter with ROL <br />
| (rtl8139)<br />
|-<br />
| Compaq Computer Corporation<br />
| HNE-300 <br />
| (RealTek RTL8139c) (iPaq Networking) (rtl8139)<br />
|-<br />
| U.S. Robotics<br />
| USR997902 <br />
| 10/100/1000 Mbps PCI Network Card (rtl8169)<br />
|-<br />
|rowspan="2" | Intel Corporation<br />
| i8255x<br />
|<br />
|-<br />
| i82801<br />
| <br />
|-<br />
|rowspan="2" | Silicon Integrated Systems <br />
| SIS900<br />
| <br />
|-<br />
| SIS7016<br />
|<br />
|-<br />
|rowspan="2" | AMD<br />
| 79c970<br />
| pcnet32 (PCnet32 LANCE)<br />
|-<br />
| 79c978 <br />
| pcnet32 (HomePNA)<br />
|-<br />
|rowspan="16" | NVidia<br />
| NForce<br />
| <br />
|-<br />
| NForce2<br />
| <br />
|-<br />
| NForce3<br />
| <br />
|-<br />
| MCP2A<br />
| <br />
|-<br />
| CK8S<br />
| <br />
|-<br />
| CK804<br />
| <br />
|-<br />
| MCP04<br />
| <br />
|-<br />
| MCP51<br />
| <br />
|-<br />
| MCP55<br />
| <br />
|-<br />
| MCP61<br />
| <br />
|-<br />
| MCP65<br />
| <br />
|-<br />
| MCP67<br />
| <br />
|-<br />
| MCP73<br />
| <br />
|-<br />
| MCP77<br />
| <br />
|-<br />
| MCP79<br />
| <br />
|-<br />
| MCP89<br />
| <br />
|-<br />
|}<br />
<br />
<br />
'''Устройства ввода'''<br />
{| class="wikitable" border="1" <br />
! Тип устройства<br />
! Устройство<br />
! Поддержка в KolibriOS<br />
|-<br />
|rowspan="4" | Устройства ввода графической информации<br />
| Сканер <br />
| Не поддерживается<br />
|-<br />
| Видео- и Веб-камера <br />
| Не поддерживается<br />
|-<br />
| Цифровой фотоаппарат<br />
| Не поддерживается<br />
|-<br />
| Плата видеозахвата<br />
| Не поддерживается<br />
|-<br />
|rowspan="3" | Устройства ввода звука<br />
| Микрофон<br />
| Не поддерживается<br />
|-<br />
| Цифровой диктофон<br />
| Не поддерживается<br />
|-<br />
| Модем <br />
| Поддерживается ядром ОС<br />
|-<br />
|rowspan="2" | Устройства ввода текстовой информации<br />
| Клавиатура (PS/2) <br />
| Поддерживается ядром ОС<br />
|-<br />
| Клавиатура (USB)<br />
| Не поддерживается<br />
|-<br />
|rowspan="8" | Указательные (координатные) устройства с относительным указанием позиции (перемещения)<br />
| Мышь (PS/2)<br />
| Поддерживается ядром ОС<br />
|-<br />
| Мышь (Com)<br />
| Поддерживается драйвером<br />
|-<br />
| Мышь (USB)<br />
| Поддерживается драйвером<br />
|-<br />
| Тачпад <br />
| Поддерживается ядром ОС в режиме эмуляции мыши (PS/2)<br />
|-<br />
| Трекбол<br />
| ?<br />
|-<br />
| Трекпоинт <br />
| ?<br />
|-<br />
| Джойстик (LPT) <br />
| Поддерживается драйвером<br />
|-<br />
| Джойстик (USB) <br />
| Не поддерживается<br />
|-<br />
|rowspan="2" | Указательные (координатные) устройства с возможностью указания абсолютной позиции<br />
| Графический планшет<br />
| Не поддерживается<br />
|-<br />
| Световое перо<br />
| Не поддерживается<br />
|-<br />
|rowspan="4" | Игровые устройства ввода<br />
| Педаль<br />
| Не поддерживается<br />
|-<br />
| Геймпад<br />
| Не поддерживается<br />
|-<br />
| Руль<br />
| Не поддерживается<br />
|-<br />
| Рычаг для симуляторов полёта<br />
| Не поддерживается<br />
|-<br />
| Устройства ввода общего назначения<br />
| Сенсорный экран <br />
| Не поддерживается<br />
|}<br />
<br />
'''Устройства вывода'''<br />
{| class="wikitable" border="1" <br />
! Тип устройства<br />
! Устройство<br />
! Поддержка в KolibriOS<br />
|-<br />
|rowspan="4" | Устройства вывода графической информации<br />
| Монитор (дисплей)<br />
| Поддерживаются видеодрайверами<br />
|-<br />
| Проектор <br />
| Не поддерживается<br />
|-<br />
| Принтер <br />
| Не поддерживается<br />
|-<br />
| Графопостроитель <br />
| Не поддерживается<br />
|-<br />
|rowspan="3" | Устройства для вывода звука<br />
| Встроенный динамик <br />
| Поддерживается ядром ОС, также есть драйвер работающий с [[HAL]] - драйвером [[Infinity]].<br />
|-<br />
| Колонки <br />
| Поддерживаются аудиодрайверами<br />
|-<br />
| Наушники <br />
| Поддерживаются аудиодрайверами.<br />
|}<br />
<br />
=== Ресурсы предоставляемые системой для контроля оборудования ===<br />
<br />
<!--Asper: Write in this section about mmio, memory range, IRQ etc. resources that are used to control hardware and how it can be accessed in KolibriOS --><br />
<br />
Для контроля оборудования используются обработчики аппаратных прерываний ('''IRQ'''), '''порты''' ввода/вывода и '''MMIO''' (memory-mapped IO или "отображённые на память зоны ввода-вывода"), которые BIOS выделил для конкретного оборудования. Поскольку у каждого системного устройства имеется свой уникальный адрес на шине PCI, то и доступ к ним разумно осуществлять через эту шину. Следует заметить, что новый стандарт системной шины ''PCI Express'' совместим "с верху вниз" с PCI, что позволяет проводить детектирование и базовый контроль ввода-вывода PCIe-устройств помощью стандартного сервиса PCI КолибриОС.<br />
<br />
Как уже отмечалось, PCI устройства могут существенно отличаться друг от друга по используемым ресурсам и методам инициализации оборудования. Тем не менее, часть программно-доступных ресурсов является стандартной для всех устройств, что и позволяет точно идентифицировать имеющееся оборудование на шине. Прежде всего PCI устройство необходимо найти на шине, зайти в его [[PCI_config/ru|конфигурационное пространство]] и обязательно проверить совпадение его вендора/версии с имеющимся шаблоном (иначе наш драйвер начнёт рулить каким-то совсем другим железом!), после чего можно приступать к диагностике и тонкой настройке режимов работы, подготавливая устройство для дальнейшей работы. Пример поиска оборудования на шине PCI см. в файле /drivers/sceleton.asm, этот файл является базой для многих новых драйверов.<br />
<br />
Системой пока поддерживается только древний контроллер прерываний PIC, имеющий всего 16 линий запроса, при этом многие линии уже зарезервированы ядром. Важно, что на один IRQ-запрос в текущей версии Колибри можно повесить только один обработчик. Таким образом, если прерывание уже используется каким-то другим устройством, то для обеспечения корректной работы нужно либо разработать общий драйвер для конфликтующих устройств(!!), либо вручную переназначить номер IRQ, использовав ещё не занятую линию (обычно BIOS позволяет это разрулить через setup-меню).<br />
<br />
Адреса поротов ввода-вывода и диапазонов MMIO содержатся в регистрах BAR0-BAR5 конфигурационного пространства PCI-устройства. Системный программист может узнать эти адреса только прочитав BAR-регистры: из драйвера - с помощью ''pci_read_reg'' (bus/pci/pci32.inc), из пользовательской программы - вызвав подфункцию 6 сисфункции 62. <br />
Чем отличаются порты от MMIO-памяти? Принципиально - ничем. И то, и другое служит для доступа к информационным шлюзам, связывающим ЦП с внешним миром. Есть некоторые нюансы электронной организации таких шлюзов (однотипные регистровые блоки имеет смысл упаковывать в MMIO, а уникальные - хранить в отдельных портах), но программисту можно этим не заморачиваться: с точки зрения программирования вся разница между этими ресурсами - в способе чтения и записи данных '''in/out''' для портов и '''mov''' для '''mmio'''.<br />
<br />
== Что необходимо для того, чтобы написать драйвер ==<br />
<br />
Больше всего потребуется непреклонное желание добиться поставленной цели не смотря ни на какие сложности возникающие по ходу работы, это может быть основное, что вам понадобиться, как в принципе и при решении любой другой задачи.<br />
Кроме этого вам необходимо:<br />
* Прочитать статью [[Writing_drivers_for_KolibriOS/ru|"Пишем драйвер для КолибриОС"]]. В статье говорится о написании драйверов в формате MS COFF.<br> Кроме этого система позволяет писать драйвера в формате PE. Также для сведения, в рамках ветки Kolibri-ACPI создается новая драйверная архитектура ([http://board.kolibrios.org/viewtopic.php?f=3&t=1571 тема на форуме]).<br />
* Достать спецификацию (datasheet) на конкретный Южный Мост и/или конкретное устройство на которое пишется драйвер.<br> Например [http://board.kolibrios.org/viewtopic.php?f=3&t=1545 на форуме KolibriOS].<br />
* Если уже существуют в Колибри драйвера аналогичных устройств, то неплохо было бы почитать их код (посмотреть "как это делается")<br />
* Очень желательно смотреть исходный код драйверов нужного устройства для других ОС для понимания в общем и целом способов управления устройством<br />
* Уметь искать необходимую для разработки информацию, чем больше полезной информации тем лучше<br />
* Не будет лишним также общаться с другими разработчиками драйвером, в случае возникновения сложных вопросов<br />
* Для просмотра списка устройств и их параметров на шине PCI, в Колибри есть специальное приложение '''pcidev'''. К примеру если устройство на которое вы пишете драйвер не может получить IRQ в своё монопольное распоряжение, то можно посмотреть какое ещё устройство получило это прерывание, чтобы исправить ситуацию.<br />
<br />
[[Category:Системная документация]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=%D0%9A%D0%B0%D0%BA_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%D1%81%D1%8F_SVN_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BE%D0%BC_KolibriOS/ru&diff=3100Как пользоваться SVN сервером KolibriOS/ru2010-10-25T13:18:37Z<p>Art zh: RapidSVN</p>
<hr />
<div>==Предисловие==<br />
Многие люди не пользуются SVN-ом, как я понимаю, только потому что они не умеют им пользоваться. Им собственно и посвящается.<br />
<br />
'''Чтение этой статьи не заменит вам изучение официального мануала (есть [http://svnbook.red-bean.com/index.ru.html перевод на русский])!'''<br />
<br />
==Работа в ОС Windows (используя GUI клиент)==<br />
<br />
===Подготовка к работе===<br />
Наиболее простой известный мне способ для быстрого старта - это скачать уже ставшую известной программу [http://tortoisesvn.net/downloads TortoiseSVN]<br />
Основные понятия при работе с SVN - это рабочая копия и репозиторий. Каждый разработчик имеет свою рабочую копию, которую он периодически заливает в репозиторий. Кому интересно больше могут проследовать по этой [http://svnbook.red-bean.com/nightly/ru/svn-book.html ссылке].<br />
<br />
===Checkout===<br />
Скачав и установив TortioseSVN, можно приступать к "извлечению" своей рабочей копии. Правой кнопкой мышки (далее ПКМ, левой соответственно ЛКМ…) в любой папке выбираем в появившемся контекстном меню пункт "SVN Checkout..." (или "SVN извлечь..." для счастливых обладателей русской версии"). Появится диалоговое окно<br />
[[Image:svn_checkout.jpg|center|Диалог выгрузки репозитория]]<br />
<br />
Вбиваем в поле "URL of repository" нужный линк (чтобы слить весь репозиторий проекта, надо указать svn://kolibrios.org) и нажимаем OK. На этом можно закончить. У вас должна появиться рабочая копия последней на данный момент ревизии. <br />
Замечу, что в последующем нет необходимости в повторении этих действий. Чтобы обновить рабочую копию до текущей актуально версии достаточно нажать ПКМ на папке с рабочей копией и выбрать пункт "SVN Update".<br />
<br />
===Commit===<br />
Для внесения своих изменений в репозиторий необходмо обзавестись аккаунтом на svn-е. По вопросом с аккаунтами на svn обращайтесь к [[User:Mike.dld|mike.dld]]. Если ваши поправки не лишены здравого смысла, он с любезностью предоставит вам логин/пароль.<br />
<br />
По предыдущему шагу мы научились извлекать рабочую копию. В этой самой рабочей копии необходимо сделать необходимые изменения (отредактировать исходный код проекта). Прежде чем приступать к изменениям, неплохо было бы почитать [[How to modify the kernel/ru|рекомендации по внесению измений в код]] и [[Style/ru|правила форматирования кода]]. После внесения изменений значёк папки с рабочей копией изменит свой вид с [[Image:Svn_ok.JPG]] на [[Image:Svn_changed.JPG]]. Если вы создавали новые файлы, которые раньше отсутствовали в репозитории, их необходимо добавить под версионный контроль. С помощью TortoiseSVN это можно сделать через контекстное меню ("TortoiseSVN" -> "Добавить..."). Последним шагом будет выбор пункта "SVN Commit..." ("SVN фиксировать...") [[Image:Svn_tortoise_context_menu.JPG]] в контекстном меню папки с рабочей копией. Далее TortoiseSVN предложит ввести вам логин и пароль. Если авторизация пройдёт успешно, ваши изменения попадут в репозиторий и станут доступны всем разработчикам при следующем checkout-е.<br />
*''Возможно, пока вы будете вносить свои изменения в исходный код, другой разработчик успеет сделать commit. Тогда TortoiseSVN оповестит вас об этом и предложит актуализировать вашу рабочую копию репозитория. Сделайте Checkout, как описано выше. Eсли ваши изменения не пересекаются, то вы сможете сразу сделать commit. TortoiseSVN располагает всеми необходимыми средствами для разрешения конфликтов.''<br />
<br />
===Послесловие===<br />
Надеюсь, я всех убедил, что SVN - это просто. Для тех, кто экономит трафик, лучше выхода не придумаешь. Передаваемые по сети данные автоматически сжимаются, а при последующих обновлениях рабочей копии передаются лишь изменения, которые по обьёму занимают несопоставимо меньше места, чем полные исходники. Если во время скачки произойдёт разрыв соединений, то скачивать потом сначала не прийдётся. Достаточно будет сделать "SVN update", когда появится интернет, и недостающие данные докачаются сами.<br />
<br />
==Работа в ОС UNIX-like (используя GUI клиент)==<br />
<br />
===Подготовка к работе===<br />
На данный момент есть несколько программ, позволяющих работать с SVN. Те, которые мне удалось найти и установить: [http://kdesvn.alwins-world.de/ KDESvn] (Qt3), [http://zoneit.free.fr/esvn/ eSvn] (Qt3) и [http://rapidsvn.tigris.org/ RapidSVN] (wxWidgets). Так как заставить работать KDESvn мне не удалось (программа постоянно крэшится), она рассматриваться не будет.<br />
<br />
'''RapidSVN''' проверен под Ubuntu 10.4 - устанавливается и работает под Гномом без заморочек. Единственный глюк: если у Вас уже был установлен пакет Subversion (см. ниже) с опциями командной строки - перенести готовые настройки в RapidSVN не удается - приходится заново создавать параллельный срез репозитория. Для полноценной работы требуется указать в меню ''View/Preferences/Program''s внешний редактор (напр. gedit), браузер и компаратор изменений ([http://meld.sourceforge.net/ meld]).<br />
<br />
===Checkout===<br />
<br />
<br />
==Работа в любой OC (используя консольный клиент)==<br />
<br />
===Подготовка к работе===<br />
<br />
Для начала работы нужно скачать консольную версию SVN клиента. Для этого, заходим в раздел [http://subversion.tigris.org/project_packages.html Downloads] на официальном сайте и внимательно читаем, что там написано.<br />
<br />
Так же желательно добавить в переменные среды операционной системы(например, у Windows это Path) путь к папке с установленным консольным клиентом.<br />
<br />
===Checkout===<br />
Выполнить команду:<br />
----<br />
'''svn co svn://kolibrios.org'''<br><br />
----<br />
где<br><br />
'''svn''' - сама программа<br><br />
'''co''' или '''checkout''' - это команда для создания среза репозитория.<br><br />
'''svn://kolibrios.org''' - адрес репозитория в интернете.<br><br />
'''kolibrios.svn''' - папка куда будет сохраняться срез.<br />
<br />
===Update===<br />
Перейти в папку с предворительно снятым срезом репозитория и выполнить команду:<br />
----<br />
'''svn up'''<br><br />
----<br />
где<br><br />
'''svn''' - сама программа<br><br />
'''up''' или '''update''' - это команда для обновление до последней ревизии репозитория.<br />
<br />
<!--<br />
===Commit===<br />
<br />
erg<br />
--><br />
<br />
==См. также==<br />
#[http://tortoisesvn.net/ TortiosSVN]<br />
#[http://ru.wikipedia.org/wiki/Subversion Subversion]<br />
#[http://svnbook.red-bean.com/index.ru.html Управление версиями в Subversion]<br />
#[http://meos.sysbin.com/viewtopic.php?t=711 Оригинал статьи]<br />
<br />
[[Category:Руководства]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=%D0%9A%D0%B0%D0%BA_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%D1%81%D1%8F_SVN_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BE%D0%BC_KolibriOS/ru&diff=3099Как пользоваться SVN сервером KolibriOS/ru2010-10-25T13:11:12Z<p>Art zh: /* Подготовка к работе */</p>
<hr />
<div>==Предисловие==<br />
Многие люди не пользуются SVN-ом, как я понимаю, только потому что они не умеют им пользоваться. Им собственно и посвящается.<br />
<br />
'''Чтение этой статьи не заменит вам изучение официального мануала (есть [http://svnbook.red-bean.com/index.ru.html перевод на русский])!'''<br />
<br />
==Работа в ОС Windows (используя GUI клиент)==<br />
<br />
===Подготовка к работе===<br />
Наиболее простой известный мне способ для быстрого старта - это скачать уже ставшую известной программу [http://tortoisesvn.net/downloads TortoiseSVN]<br />
Основные понятия при работе с SVN - это рабочая копия и репозиторий. Каждый разработчик имеет свою рабочую копию, которую он периодически заливает в репозиторий. Кому интересно больше могут проследовать по этой [http://svnbook.red-bean.com/nightly/ru/svn-book.html ссылке].<br />
<br />
===Checkout===<br />
Скачав и установив TortioseSVN, можно приступать к "извлечению" своей рабочей копии. Правой кнопкой мышки (далее ПКМ, левой соответственно ЛКМ…) в любой папке выбираем в появившемся контекстном меню пункт "SVN Checkout..." (или "SVN извлечь..." для счастливых обладателей русской версии"). Появится диалоговое окно<br />
[[Image:svn_checkout.jpg|center|Диалог выгрузки репозитория]]<br />
<br />
Вбиваем в поле "URL of repository" нужный линк (чтобы слить весь репозиторий проекта, надо указать svn://kolibrios.org) и нажимаем OK. На этом можно закончить. У вас должна появиться рабочая копия последней на данный момент ревизии. <br />
Замечу, что в последующем нет необходимости в повторении этих действий. Чтобы обновить рабочую копию до текущей актуально версии достаточно нажать ПКМ на папке с рабочей копией и выбрать пункт "SVN Update".<br />
<br />
===Commit===<br />
Для внесения своих изменений в репозиторий необходмо обзавестись аккаунтом на svn-е. По вопросом с аккаунтами на svn обращайтесь к [[User:Mike.dld|mike.dld]]. Если ваши поправки не лишены здравого смысла, он с любезностью предоставит вам логин/пароль.<br />
<br />
По предыдущему шагу мы научились извлекать рабочую копию. В этой самой рабочей копии необходимо сделать необходимые изменения (отредактировать исходный код проекта). Прежде чем приступать к изменениям, неплохо было бы почитать [[How to modify the kernel/ru|рекомендации по внесению измений в код]] и [[Style/ru|правила форматирования кода]]. После внесения изменений значёк папки с рабочей копией изменит свой вид с [[Image:Svn_ok.JPG]] на [[Image:Svn_changed.JPG]]. Если вы создавали новые файлы, которые раньше отсутствовали в репозитории, их необходимо добавить под версионный контроль. С помощью TortoiseSVN это можно сделать через контекстное меню ("TortoiseSVN" -> "Добавить..."). Последним шагом будет выбор пункта "SVN Commit..." ("SVN фиксировать...") [[Image:Svn_tortoise_context_menu.JPG]] в контекстном меню папки с рабочей копией. Далее TortoiseSVN предложит ввести вам логин и пароль. Если авторизация пройдёт успешно, ваши изменения попадут в репозиторий и станут доступны всем разработчикам при следующем checkout-е.<br />
*''Возможно, пока вы будете вносить свои изменения в исходный код, другой разработчик успеет сделать commit. Тогда TortoiseSVN оповестит вас об этом и предложит актуализировать вашу рабочую копию репозитория. Сделайте Checkout, как описано выше. Eсли ваши изменения не пересекаются, то вы сможете сразу сделать commit. TortoiseSVN располагает всеми необходимыми средствами для разрешения конфликтов.''<br />
<br />
===Послесловие===<br />
Надеюсь, я всех убедил, что SVN - это просто. Для тех, кто экономит трафик, лучше выхода не придумаешь. Передаваемые по сети данные автоматически сжимаются, а при последующих обновлениях рабочей копии передаются лишь изменения, которые по обьёму занимают несопоставимо меньше места, чем полные исходники. Если во время скачки произойдёт разрыв соединений, то скачивать потом сначала не прийдётся. Достаточно будет сделать "SVN update", когда появится интернет, и недостающие данные докачаются сами.<br />
<br />
==Работа в ОС UNIX-like (используя GUI клиент)==<br />
<br />
===Подготовка к работе===<br />
На данный момент есть несколько программ, позволяющих работать с SVN. Те, которые мне удалось найти и установить: [http://kdesvn.alwins-world.de/ KDESvn] (Qt3), [http://zoneit.free.fr/esvn/ eSvn] (Qt3) и [http://rapidsvn.tigris.org/ RapidSVN] (wxWidgets). Так как заставить работать KDESvn мне не удалось (программа постоянно крэшится), она рассматриваться не будет.<br />
<br />
'''RabitSVN''' проверен под Ubuntu 10.4 - устанавливается и работает под Гномом без заморочек. Единственный глюк: если у Вас уже был установлен пакет Subversion (см. ниже) с опциями командной строки - перенести готовые настройки в RabitSVN не удается - приходится заново создавать параллельный срез репозитория. Для полноценной работы требуется указать в меню ''View/Preferences/Program''s внешний редактор (напр. gedit), браузер и компаратор изменений ([http://meld.sourceforge.net/ meld]).<br />
<br />
===Checkout===<br />
<br />
<br />
==Работа в любой OC (используя консольный клиент)==<br />
<br />
===Подготовка к работе===<br />
<br />
Для начала работы нужно скачать консольную версию SVN клиента. Для этого, заходим в раздел [http://subversion.tigris.org/project_packages.html Downloads] на официальном сайте и внимательно читаем, что там написано.<br />
<br />
Так же желательно добавить в переменные среды операционной системы(например, у Windows это Path) путь к папке с установленным консольным клиентом.<br />
<br />
===Checkout===<br />
Выполнить команду:<br />
----<br />
'''svn co svn://kolibrios.org'''<br><br />
----<br />
где<br><br />
'''svn''' - сама программа<br><br />
'''co''' или '''checkout''' - это команда для создания среза репозитория.<br><br />
'''svn://kolibrios.org''' - адрес репозитория в интернете.<br><br />
'''kolibrios.svn''' - папка куда будет сохраняться срез.<br />
<br />
===Update===<br />
Перейти в папку с предворительно снятым срезом репозитория и выполнить команду:<br />
----<br />
'''svn up'''<br><br />
----<br />
где<br><br />
'''svn''' - сама программа<br><br />
'''up''' или '''update''' - это команда для обновление до последней ревизии репозитория.<br />
<br />
<!--<br />
===Commit===<br />
<br />
erg<br />
--><br />
<br />
==См. также==<br />
#[http://tortoisesvn.net/ TortiosSVN]<br />
#[http://ru.wikipedia.org/wiki/Subversion Subversion]<br />
#[http://svnbook.red-bean.com/index.ru.html Управление версиями в Subversion]<br />
#[http://meos.sysbin.com/viewtopic.php?t=711 Оригинал статьи]<br />
<br />
[[Category:Руководства]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=SysFn64/ru&diff=3096SysFn64/ru2010-10-17T16:43:14Z<p>Art zh: fn64 implementation</p>
<hr />
<div>'''Функция 64 - перераспределить память приложения.'''<br />
<br />
''Параметры:''<br />
<br />
* eax = 64 - номер функции<br />
* ebx = 1 - единственная подфункция<br />
* ecx = новый размер памяти<br />
<br />
''Возвращаемое значение:''<br />
<br />
* eax = 0 - успешно<br />
* eax = 1 - недостаточно памяти<br />
<br />
''Замечания:''<br />
<br />
* Есть другой способ выделения/освобождения динамической памяти - подфункции 11, 12, 13 функции 68.<br />
* Функция не может использоваться совместно с 68.11, 68.12, 68.13. Вызов функции будет игнорироваться, если приложение создаст локальную кучу вызовом 68.11.<br />
<br />
''Implementation:''<br />
sys_resize_app_memory: (core/sys32.inc)<br />
<br />
{{System_functions}}<br />
[[Category: SysCalls]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=EmbeddedKOS/ru&diff=3070EmbeddedKOS/ru2010-09-05T14:39:28Z<p>Art zh: </p>
<hr />
<div>== Embedded-KOS - Колибри для встроенных систем ==<br />
<br />
Ряд практических работ, проведенных участниками проекта (см. например [http://board.kolibrios.org/viewtopic.php?t=897 Колибри на производстве]), показал принципиальную возможность внедрения КолибриОС в составе систем сбора/обработки информации и АСУП.<br /><br />
<br />
Компактное ядро с открытым кодом, минималистская простота и удобство графической подсистемы, достаточно развитый пользовательский интерфейс, приличный низкоуровневый системынй сервис, поддержка наиболее популярных сетевых протоколов и файловых систем - всё это уже сейчас позволяет говорить о Колибри как о перспективной ОС для встроенных систем.<br /><br />
<br />
В то же время, для превращения Колибри в полноценную embedded-OS требуется решить ряд серьёзных проблем: [http://board.kolibrios.org/viewtopic.php?t=1211]. <br />
<br />
Опробование вариантов таких решений ведется в рамках проекта '''Колибри-А''' (литера "А" подчеркивает привязку кода к архитектуре AMD/HT).<br /><br />
<br />
Колибри-А — пока еще очень сырая и экспериментальная система, полезная только для квалифицированных системотехников, системных программистов, а также разработчиков и наладчиков компьютерного оборудования. <big>Разработчики предупреждают, что многие стандартные механизмы системной защиты и контроля доступа к критическим системным ресурсам в Колибри-А '''отключены''' с целью облегчения максимально свободого и удобного доступа к оборудованию. Использование этой системы на домашних, офисных и серверных компьютерах '''категорически противопоказано''' и может повлечь невосстановимую потерю данных и полный выход из строя компьютера и/или подключенных к нему периферийных устройств. <br />
</big><br />
<br />
Итак, мы Вас предупредили...<br />
<br />
-----<br />
<br />
<br />
'''Некоторые особенности Колибри-А'''<br /><br />
* Повышенные требования к [[Embedded_Hardware/ru|аппаратной платформе]].<br />
* Дополнительный [[Embedded_API/ru|API-сервис]], предоставляющий пользователю расширенный доступ к низкоуровневому вводу/выводу. <br /><br />
* Бездрайверный [[SubFn62-DA/ru|ПДП]] и контроль нестандартной аппаратуры через доступный из пользовательского пространства статический системный буфер.<br />
* Расширенная поддержка функций PCI-express с элементами тренинга шины, MSI и контроля режимов питания. <br /><br />
* Размер ядра заметно сокращен - исключены многие избыточные, узкоспециальные и рудиментарные системные структуры и функции:<br />
** исключены видеорежимы низкого разрешения (ниже 800х600);<br />
** оставлен единственный цветовой режим (32bpp);<br />
** удаляются сисфункции 42, 43 и 44 (забавное наследие Менуэта); <br />
** функция 46 отпадает за ненадобностью (ввод/вывод разрешён для всех портов).<br />
<br />
<br />
'''На очереди:'''<br /><br />
* Новая ''векторная'' конвейерная графическая подсистема с SWF-тэгами. <br />
* Оптимизированный под RT-приложения менеджер памяти.<br />
* Минимальная поддержка APIC. <br />
* Полная поддержка PCIe, включая хотплаг и управление виртуальными каналами.<br />
* Реализация быстрой ''и безопасной'' загрузки ядра из ПЗУ. <br />
* Поддержка SATA-дисков (пока только для SB700 и только в IDE-режиме).<br />
* Поддержка некоторых классов USB-устройств (только SB700).<br />
* Дальнейшее уплотнение ядра с целью сокращения кода kernel.mnt до 64Кбайт:<br />
** удалить сифункцию 64;<br />
** удалить статические карты страниц и портов в/в;<br />
** удалить V86-режим;<br />
** поддержку FAT12, NTFS и ext2/3 сделать опциональной.<br />
<br />
'''Конечная цель: '''<br /><br />
а) 100% монолитное бездрайверное ядро, <br /><br />
б) жестко привязанное к выбранной платформе, <br /><br />
в) легко конфигурируемое под конкретную задачу, и <br /><br />
г) прошитое в бортовое ПЗУ.<br /><br />
<br />
'''Вариант реализации: '''<br />
<br />
Как payload для проекта [http://www.coreboot.org/ coreboot]. Работа над этим ведется [http://board.kolibrios.org/viewtopic.php?f=4&t=1368]<br />
Для успешного осуществления требуется удаление зависимости ядра KolibriOS от вызовов BIOS.<br />
Ссылки по теме [http://www.coreboot.org/Payloads] [http://www.coreboot.org/Development_Guidelines] [http://www.coreboot.org/Developer_Manual]<br />
<br />
[[Category:Coding]]<br />
[[Category:Системная документация]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=PCI/ru&diff=3060PCI/ru2010-08-22T23:08:49Z<p>Art zh: /* Специальные свойства */</p>
<hr />
<div>==Шина PCI==<br />
Спецификация PCI задаёт один из основных стандартов аппаратной и программной организации современных ПК. <br />
<br />
Официальный стандарт распространяется группой PCI SIG [http://www.pcisig.com/home/] для ограниченного круга подписчиков; однако в Сети можно найти исчерпывающую информацию практически обо всех технических деталях.<br />
<br />
История создания и эволюции PCI - см. [http://ru.wikipedia.org/wiki/PCI]. Здесь лишь кратко напомним, что внедрение шины PCI в середине 90-х привело к мощному рывку в развитии компьютерной техники. Настолько мощному, что уже к началу 2000-х она превратилась в один из ''тормозящих'' факторов. В новых системах четко прослеживается тенденция сокращения сектора PCI-карт и вытеснения собственно ''шины'' на периферию Южного Моста. <br />
<br />
Тем не менее, основные принципы адресации, конфигурирования и программной организации устройств, заложенные стандартом PCI, остаются неизменными.<br />
<br />
===Принципы адресации устройств===<br />
<br />
Характерной особенностью шины PCI является наличие трёх адресных пространств:<br />
* от 0 до 6 ''связных зон'' адресации портов ввода/вывода;<br />
* от 0 до 7 связных зон адресации внутренней памяти (включая ROM) и отображённых на память устройств ввода/вывода;<br />
* конфигурационное адресное пространство размером 1кб (расширено до 4кб в спецификации PCI Express).<br />
<br />
Термин "''связная зона''" означает некий диапазон адресов, однозначно соответствующих конкретным регистрам ввода/вывода и внутренним ячейкам памяти устройства, не содержащий пустых областей и не пересекающийся с адресными зонами других устройств. <br />
<br />
Назначение конкретных адресов каждой из адресных зон производится этапе '''конфигурации''':<br />
* непосредственно после включения питания - под управлением BIOS;<br />
* после загрузки ОС (подгонка под адресную модель ядра и ''Hotplug'') - под управлением шинных драйверов и подсистемы ACPI.<br />
<br />
Важно, что само устройство при конфигурации выступает лишь "заказчиком" адресного пространства для своих устройств, указывая требуемый размер каждой зоны ввода/вывода или MMIO (или 0, если данная зона устройству не нужна); конкретные адреса для этих зон выделяются BIOSом или операционной системой в соответствии с имеющимися ресурсами и используемой моделью памяти. <br />
<br />
BDF-адрес устройства в системном конфигурационном пространстве (см.ниже) определяется его физическим подключением к конкретному слоту PCI-шины (для интегрированных устройств - схемой разводки сигнальных линий на материнской плате и регистровой моделью чипсета) и поэтому не зависит ни от BIOS, ни от операционной системы. <br />
<br />
По окончании конфигурации назначенные адреса хранятся в '''BAR'''-регистрах конфигурационного пространства и могут быть прочитаны драйвером и пользовательской программой. <br />
<br />
В принципе, PCI-устройство может вообще не иметь никаких ресурсов ввода/вывода - ни портов, ни MMIO); однако его конфигурационное пространство должно существовать в любом случае.<br />
<br />
===Конфигурационное пространство===<br />
Спецификация PCI предусматривает три разных варианта конфигурационных структур для трёх категорий устройств:<br />
# устройство общего назначения (general-purpose device);<br />
# мост (bridge) между двумя PCI-совместимыми физическими шинами (напр. между PCI и PCI, PCI-X и PCI, HT и PCIe);<br />
# мост между PCI и CardBus.<br />
<br />
Ниже приведен вариант конфигурационной структуры для обычного устройства PCI <br />
{| class="wikitable" border="1" <br />
|-<br />
! смещение<br />
! +0<br />
! +1<br />
! +2<br />
! +3<br />
|-<br />
| +0х00<br />
| align="center" colspan="2"|Код производителя<br />
| align="center" colspan="2"|Код устройства<br />
|-<br />
| +0х04<br />
| align="center" colspan="2"|Регистр управления<br />
| align="center" colspan="2"|Регистр состояния<br />
|-<br />
| +0х08<br />
| Ревизия<br />
| ProgIF<br />
| Подкласс<br />
| Класс <br />
|-<br />
| +0х0С<br />
| Cache Line <br />
| LatTmr <br />
| Header (0x00 или 0x80)<br />
| BIST<br />
|-<br />
| +0х10<br />
| align="center" colspan="4"| Регистр базового адреса #0 (BAR0)<br />
|-<br />
| +0х14<br />
| align="center" colspan="4"| Регистр базового адреса #1 (BAR1)<br />
|-<br />
| +0х18<br />
| align="center" colspan="4"| Регистр базового адреса #2 (BAR2)<br />
|-<br />
| +0х1C<br />
| align="center" colspan="4"| Регистр базового адреса #3 (BAR3)<br />
|-<br />
| +0х20<br />
| align="center" colspan="4"| Регистр базового адреса #4 (BAR4)<br />
|-<br />
| +0х24<br />
| align="center" colspan="4"| Регистр базового адреса #5 (BAR5)<br />
|-<br />
| +0х28<br />
| align="center" colspan="4"| 0х00 (зарезервировано для CardBus-устройств)<br />
|-<br />
| +0х2C<br />
| align="center" colspan="2"| Производитель подсистемы<br />
| align="center" colspan="2"| Код подсистемы<br />
|-<br />
| +0х30<br />
| align="center" colspan="4"| Базовый адрес бортового ПЗУ (Extension ROM)<br />
|-<br />
| +0х34<br />
| align="center" | Список доп. параметров<br />
| align="center" colspan="3"| Зарезервировано<br />
|-<br />
| +0х38<br />
| align="center" colspan="4"| Зарезервировано<br />
|-<br />
| rowspan="2"|+0х3С<br />
| align="center" colspan="2"| Организация аппаратного прерывания<br />
| align="center" colspan="2"| Время захвата системной шины, мкс/4<br />
|-<br />
| align="center" | Номер IRQ (только для PIC)<br />
| align="center" | Линия (INTA#...INTD#)<br />
| align="center" | Мин. длительность захвата <br />
| align="center" | Макс. допустимое ожидание <br />
|-<br />
| +0х40<br />
| align="center" | 1-й элемент списка<br />
| align="center" | следующий элемент<br />
| align="center" colspan="2" | Спецсвойства (Capabilities)<br />
|-<br />
| rowspan="2"| . . . 0хFC<br />
| align="center" colspan="4"| Незарезервированная область конфигурационного пространства<br />
|-<br />
| align="center" colspan="4"| (назначение регистров определяется разработчиком устройства)<br />
|-<br />
| +0х100<br />
| align="center" colspan="3" | Расширенные параметры PCI Express<br />
| align="center"| следующий параметр<br />
|-<br />
| +0х104<br />
| align="center" rowspan="2" colspan="4" | Серийный номер устройства (8 байт)<br />
|-<br />
| +0х108<br />
|-<br />
| rowspan="2"| . . . 0хFFC<br />
| align="center" colspan="4"| Расширенная область конфигурационного пространства PCIe<br />
|-<br />
| align="center" colspan="4"| (назначение регистров определяется разработчиком устройства)<br />
|}<br />
<br />
====Стандартные поля====<br />
<br />
====BAR-регистры====<br />
<br />
Каждое устройство может иметь от нуля до шести диапазонов памяти и/или портов ввода/вывода. Физические адреса этих ресурсов хранятся в системно-доступных 32-битных BAR-ячейках (BAR = ''Base Address Register'') конфигурационного пространства по адресам 0x10-0x24.<br />
<br />
Важно, что физические адреса назначаются каждому из диапазонов BIOSом, и в любой момент могут быть переназначены операционной системой. Само устройство не может распоряжаться назначением адресов, но только запрашивает у системы требуемый объем памяти или нужное число портов ввода/вывода для каждого из BAR-диапазонов. <br />
<br />
Самый младший бит BAR-регистра всегда равен 0 для памяти и 1 для портов.<br />
<br />
В КолибриОС содержимое BAR-регистров может быть прочитано из пользовательского приложения с помощью подфункции 6 [[SysFn62/ru|сисфункции 62]]. Пример использования этой функции для энумерации и доступа к бортовой памяти PCI-устройств приведен в программе [[PCIDEV]].<br />
<br />
====Регистры состояния и контроля====<br />
<br />
====Специальные свойства====<br />
Часть конфигурационного пространства PCI может быть занята списком ''специальных свойств'' заданного устройства (''Capabilities''; буквальный перевод - ''"способности"'' - в отношении электронного прибора представляется несколько неуместным).<br />
<br />
Элемент односвязного списка специальных свойств имеет следующую структуру:<br />
+0 : код спецсвойства (1 байт);<br />
+1 : указатель на конфигурационный адрес следующего элемента, или 0 для последнего элемента списка (1 байт);<br />
+2 : битовые поля спецсвойств (размер и функциональность определяются кодом спецсвойства).<br />
<br />
===Адресное пространство===<br />
<br />
====Адресация памяти====<br />
<br />
''(продолжение следует)''<br />
<br />
[[Category:Компьютерные шины]]<br />
[[Category:Аппаратное обеспечение]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=PCI/ru&diff=3059PCI/ru2010-08-22T23:04:28Z<p>Art zh: /* Конфигурационное пространство */</p>
<hr />
<div>==Шина PCI==<br />
Спецификация PCI задаёт один из основных стандартов аппаратной и программной организации современных ПК. <br />
<br />
Официальный стандарт распространяется группой PCI SIG [http://www.pcisig.com/home/] для ограниченного круга подписчиков; однако в Сети можно найти исчерпывающую информацию практически обо всех технических деталях.<br />
<br />
История создания и эволюции PCI - см. [http://ru.wikipedia.org/wiki/PCI]. Здесь лишь кратко напомним, что внедрение шины PCI в середине 90-х привело к мощному рывку в развитии компьютерной техники. Настолько мощному, что уже к началу 2000-х она превратилась в один из ''тормозящих'' факторов. В новых системах четко прослеживается тенденция сокращения сектора PCI-карт и вытеснения собственно ''шины'' на периферию Южного Моста. <br />
<br />
Тем не менее, основные принципы адресации, конфигурирования и программной организации устройств, заложенные стандартом PCI, остаются неизменными.<br />
<br />
===Принципы адресации устройств===<br />
<br />
Характерной особенностью шины PCI является наличие трёх адресных пространств:<br />
* от 0 до 6 ''связных зон'' адресации портов ввода/вывода;<br />
* от 0 до 7 связных зон адресации внутренней памяти (включая ROM) и отображённых на память устройств ввода/вывода;<br />
* конфигурационное адресное пространство размером 1кб (расширено до 4кб в спецификации PCI Express).<br />
<br />
Термин "''связная зона''" означает некий диапазон адресов, однозначно соответствующих конкретным регистрам ввода/вывода и внутренним ячейкам памяти устройства, не содержащий пустых областей и не пересекающийся с адресными зонами других устройств. <br />
<br />
Назначение конкретных адресов каждой из адресных зон производится этапе '''конфигурации''':<br />
* непосредственно после включения питания - под управлением BIOS;<br />
* после загрузки ОС (подгонка под адресную модель ядра и ''Hotplug'') - под управлением шинных драйверов и подсистемы ACPI.<br />
<br />
Важно, что само устройство при конфигурации выступает лишь "заказчиком" адресного пространства для своих устройств, указывая требуемый размер каждой зоны ввода/вывода или MMIO (или 0, если данная зона устройству не нужна); конкретные адреса для этих зон выделяются BIOSом или операционной системой в соответствии с имеющимися ресурсами и используемой моделью памяти. <br />
<br />
BDF-адрес устройства в системном конфигурационном пространстве (см.ниже) определяется его физическим подключением к конкретному слоту PCI-шины (для интегрированных устройств - схемой разводки сигнальных линий на материнской плате и регистровой моделью чипсета) и поэтому не зависит ни от BIOS, ни от операционной системы. <br />
<br />
По окончании конфигурации назначенные адреса хранятся в '''BAR'''-регистрах конфигурационного пространства и могут быть прочитаны драйвером и пользовательской программой. <br />
<br />
В принципе, PCI-устройство может вообще не иметь никаких ресурсов ввода/вывода - ни портов, ни MMIO); однако его конфигурационное пространство должно существовать в любом случае.<br />
<br />
===Конфигурационное пространство===<br />
Спецификация PCI предусматривает три разных варианта конфигурационных структур для трёх категорий устройств:<br />
# устройство общего назначения (general-purpose device);<br />
# мост (bridge) между двумя PCI-совместимыми физическими шинами (напр. между PCI и PCI, PCI-X и PCI, HT и PCIe);<br />
# мост между PCI и CardBus.<br />
<br />
Ниже приведен вариант конфигурационной структуры для обычного устройства PCI <br />
{| class="wikitable" border="1" <br />
|-<br />
! смещение<br />
! +0<br />
! +1<br />
! +2<br />
! +3<br />
|-<br />
| +0х00<br />
| align="center" colspan="2"|Код производителя<br />
| align="center" colspan="2"|Код устройства<br />
|-<br />
| +0х04<br />
| align="center" colspan="2"|Регистр управления<br />
| align="center" colspan="2"|Регистр состояния<br />
|-<br />
| +0х08<br />
| Ревизия<br />
| ProgIF<br />
| Подкласс<br />
| Класс <br />
|-<br />
| +0х0С<br />
| Cache Line <br />
| LatTmr <br />
| Header (0x00 или 0x80)<br />
| BIST<br />
|-<br />
| +0х10<br />
| align="center" colspan="4"| Регистр базового адреса #0 (BAR0)<br />
|-<br />
| +0х14<br />
| align="center" colspan="4"| Регистр базового адреса #1 (BAR1)<br />
|-<br />
| +0х18<br />
| align="center" colspan="4"| Регистр базового адреса #2 (BAR2)<br />
|-<br />
| +0х1C<br />
| align="center" colspan="4"| Регистр базового адреса #3 (BAR3)<br />
|-<br />
| +0х20<br />
| align="center" colspan="4"| Регистр базового адреса #4 (BAR4)<br />
|-<br />
| +0х24<br />
| align="center" colspan="4"| Регистр базового адреса #5 (BAR5)<br />
|-<br />
| +0х28<br />
| align="center" colspan="4"| 0х00 (зарезервировано для CardBus-устройств)<br />
|-<br />
| +0х2C<br />
| align="center" colspan="2"| Производитель подсистемы<br />
| align="center" colspan="2"| Код подсистемы<br />
|-<br />
| +0х30<br />
| align="center" colspan="4"| Базовый адрес бортового ПЗУ (Extension ROM)<br />
|-<br />
| +0х34<br />
| align="center" | Список доп. параметров<br />
| align="center" colspan="3"| Зарезервировано<br />
|-<br />
| +0х38<br />
| align="center" colspan="4"| Зарезервировано<br />
|-<br />
| rowspan="2"|+0х3С<br />
| align="center" colspan="2"| Организация аппаратного прерывания<br />
| align="center" colspan="2"| Время захвата системной шины, мкс/4<br />
|-<br />
| align="center" | Номер IRQ (только для PIC)<br />
| align="center" | Линия (INTA#...INTD#)<br />
| align="center" | Мин. длительность захвата <br />
| align="center" | Макс. допустимое ожидание <br />
|-<br />
| +0х40<br />
| align="center" | 1-й элемент списка<br />
| align="center" | следующий элемент<br />
| align="center" colspan="2" | Спецсвойства (Capabilities)<br />
|-<br />
| rowspan="2"| . . . 0хFC<br />
| align="center" colspan="4"| Незарезервированная область конфигурационного пространства<br />
|-<br />
| align="center" colspan="4"| (назначение регистров определяется разработчиком устройства)<br />
|-<br />
| +0х100<br />
| align="center" colspan="3" | Расширенные параметры PCI Express<br />
| align="center"| следующий параметр<br />
|-<br />
| +0х104<br />
| align="center" rowspan="2" colspan="4" | Серийный номер устройства (8 байт)<br />
|-<br />
| +0х108<br />
|-<br />
| rowspan="2"| . . . 0хFFC<br />
| align="center" colspan="4"| Расширенная область конфигурационного пространства PCIe<br />
|-<br />
| align="center" colspan="4"| (назначение регистров определяется разработчиком устройства)<br />
|}<br />
<br />
====Стандартные поля====<br />
<br />
====BAR-регистры====<br />
<br />
Каждое устройство может иметь от нуля до шести диапазонов памяти и/или портов ввода/вывода. Физические адреса этих ресурсов хранятся в системно-доступных 32-битных BAR-ячейках (BAR = ''Base Address Register'') конфигурационного пространства по адресам 0x10-0x24.<br />
<br />
Важно, что физические адреса назначаются каждому из диапазонов BIOSом, и в любой момент могут быть переназначены операционной системой. Само устройство не может распоряжаться назначением адресов, но только запрашивает у системы требуемый объем памяти или нужное число портов ввода/вывода для каждого из BAR-диапазонов. <br />
<br />
Самый младший бит BAR-регистра всегда равен 0 для памяти и 1 для портов.<br />
<br />
В КолибриОС содержимое BAR-регистров может быть прочитано из пользовательского приложения с помощью подфункции 6 [[SysFn62/ru|сисфункции 62]]. Пример использования этой функции для энумерации и доступа к бортовой памяти PCI-устройств приведен в программе [[PCIDEV]].<br />
<br />
====Регистры состояния и контроля====<br />
<br />
====Специальные свойства====<br />
Часть конфигурационного пространства PCI может быть занята списком ''специальных свойств'' заданного устройства (''Capabilities''; буквальный перевод - ''"способности"'' - в отношении электронного прибора представляется несколько неуместным).<br />
<br />
Односвязный список специальных свойств имеет следующую структуру:<br />
+0 : код спецсвойства (1 байт);<br />
+1 : указатель на конфигурационный адрес следующего спецсвойства (1 байт);<br />
+2 : битовые поля спецсвойств (размер и функциональность определяются кодом спецсвойства).<br />
<br />
===Адресное пространство===<br />
<br />
====Адресация памяти====<br />
<br />
''(продолжение следует)''<br />
<br />
[[Category:Компьютерные шины]]<br />
[[Category:Аппаратное обеспечение]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=PCI/ru&diff=3058PCI/ru2010-08-22T19:13:19Z<p>Art zh: /* BAR-регистры */</p>
<hr />
<div>==Шина PCI==<br />
Спецификация PCI задаёт один из основных стандартов аппаратной и программной организации современных ПК. <br />
<br />
Официальный стандарт распространяется группой PCI SIG [http://www.pcisig.com/home/] для ограниченного круга подписчиков; однако в Сети можно найти исчерпывающую информацию практически обо всех технических деталях.<br />
<br />
История создания и эволюции PCI - см. [http://ru.wikipedia.org/wiki/PCI]. Здесь лишь кратко напомним, что внедрение шины PCI в середине 90-х привело к мощному рывку в развитии компьютерной техники. Настолько мощному, что уже к началу 2000-х она превратилась в один из ''тормозящих'' факторов. В новых системах четко прослеживается тенденция сокращения сектора PCI-карт и вытеснения собственно ''шины'' на периферию Южного Моста. <br />
<br />
Тем не менее, основные принципы адресации, конфигурирования и программной организации устройств, заложенные стандартом PCI, остаются неизменными.<br />
<br />
===Принципы адресации устройств===<br />
<br />
Характерной особенностью шины PCI является наличие трёх адресных пространств:<br />
* от 0 до 6 ''связных зон'' адресации портов ввода/вывода;<br />
* от 0 до 7 связных зон адресации внутренней памяти (включая ROM) и отображённых на память устройств ввода/вывода;<br />
* конфигурационное адресное пространство размером 1кб (расширено до 4кб в спецификации PCI Express).<br />
<br />
Термин "''связная зона''" означает некий диапазон адресов, однозначно соответствующих конкретным регистрам ввода/вывода и внутренним ячейкам памяти устройства, не содержащий пустых областей и не пересекающийся с адресными зонами других устройств. <br />
<br />
Назначение конкретных адресов каждой из адресных зон производится этапе '''конфигурации''':<br />
* непосредственно после включения питания - под управлением BIOS;<br />
* после загрузки ОС (подгонка под адресную модель ядра и ''Hotplug'') - под управлением шинных драйверов и подсистемы ACPI.<br />
<br />
Важно, что само устройство при конфигурации выступает лишь "заказчиком" адресного пространства для своих устройств, указывая требуемый размер каждой зоны ввода/вывода или MMIO (или 0, если данная зона устройству не нужна); конкретные адреса для этих зон выделяются BIOSом или операционной системой в соответствии с имеющимися ресурсами и используемой моделью памяти. <br />
<br />
BDF-адрес устройства в системном конфигурационном пространстве (см.ниже) определяется его физическим подключением к конкретному слоту PCI-шины (для интегрированных устройств - схемой разводки сигнальных линий на материнской плате и регистровой моделью чипсета) и поэтому не зависит ни от BIOS, ни от операционной системы. <br />
<br />
По окончании конфигурации назначенные адреса хранятся в '''BAR'''-регистрах конфигурационного пространства и могут быть прочитаны драйвером и пользовательской программой. <br />
<br />
В принципе, PCI-устройство может вообще не иметь никаких ресурсов ввода/вывода - ни портов, ни MMIO); однако его конфигурационное пространство должно существовать в любом случае.<br />
<br />
===Конфигурационное пространство===<br />
Спецификация PCI предусматривает три разных варианта конфигурационных структур для трёх категорий устройств:<br />
# устройство общего назначения (gemeral device);<br />
# мост (bridge) между двумя PCI-совместимыми физическими шинами (напр. между PCI и PCI, PCI-X и PCI, HT и PCIe);<br />
# мост между PCI и CardBus.<br />
<br />
Ниже приведен вариант конфигурационной структуры для обычного устройства PCI <br />
{| class="wikitable" border="1" <br />
|-<br />
! смещение<br />
! +0<br />
! +1<br />
! +2<br />
! +3<br />
|-<br />
| +0х00<br />
| align="center" colspan="2"|Код производителя<br />
| align="center" colspan="2"|Код устройства<br />
|-<br />
| +0х04<br />
| align="center" colspan="2"|Регистр управления<br />
| align="center" colspan="2"|Регистр состояния<br />
|-<br />
| +0х08<br />
| Ревизия<br />
| ProgIF<br />
| Подкласс<br />
| Класс <br />
|-<br />
| +0х0С<br />
| Cache Line <br />
| LatTmr <br />
| Header (0x00 или 0x80)<br />
| BIST<br />
|-<br />
| +0х10<br />
| align="center" colspan="4"| Регистр базового адреса #0 (BAR0)<br />
|-<br />
| +0х14<br />
| align="center" colspan="4"| Регистр базового адреса #1 (BAR1)<br />
|-<br />
| +0х18<br />
| align="center" colspan="4"| Регистр базового адреса #2 (BAR2)<br />
|-<br />
| +0х1C<br />
| align="center" colspan="4"| Регистр базового адреса #3 (BAR3)<br />
|-<br />
| +0х20<br />
| align="center" colspan="4"| Регистр базового адреса #4 (BAR4)<br />
|-<br />
| +0х24<br />
| align="center" colspan="4"| Регистр базового адреса #5 (BAR5)<br />
|-<br />
| +0х28<br />
| align="center" colspan="4"| 0х00 (зарезервировано для CardBus-устройств)<br />
|-<br />
| +0х2C<br />
| align="center" colspan="2"| Производитель подсистемы<br />
| align="center" colspan="2"| Код подсистемы<br />
|-<br />
| +0х30<br />
| align="center" colspan="4"| Базовый адрес бортового ПЗУ (Extension ROM)<br />
|-<br />
| +0х34<br />
| align="center" | Список доп. параметров<br />
| align="center" colspan="3"| Зарезервировано<br />
|-<br />
| +0х38<br />
| align="center" colspan="4"| Зарезервировано<br />
|-<br />
| rowspan="2"|+0х3С<br />
| align="center" colspan="2"| Организация аппаратного прерывания<br />
| align="center" colspan="2"| Время захвата системной шины, мкс/4<br />
|-<br />
| align="center" | Номер IRQ (только для PIC)<br />
| align="center" | Линия (INTA#...INTD#)<br />
| align="center" | Мин. длительность захвата <br />
| align="center" | Макс. допустимое ожидание <br />
|-<br />
| +0х40<br />
| align="center" | 1-й доп. параметр<br />
| align="center" | следующий параметр<br />
| align="center" colspan="2" | 1-й доп. параметр<br />
|-<br />
| rowspan="2"| . . . 0хFC<br />
| align="center" colspan="4"| Незарезервированная область конфигурационного пространства<br />
|-<br />
| align="center" colspan="4"| (назначение регистров определяется разработчиком устройства)<br />
|-<br />
| +0х100<br />
| align="center" colspan="3" | Расширенные параметры PCI Express<br />
| align="center"| следующий параметр<br />
|-<br />
| +0х104<br />
| align="center" rowspan="2" colspan="4" | Серийный номер устройства (8 байт)<br />
|-<br />
| +0х108<br />
|-<br />
| rowspan="2"| . . . 0хFFC<br />
| align="center" colspan="4"| Расширенная область конфигурационного пространства PCIe<br />
|-<br />
| align="center" colspan="4"| (назначение регистров определяется разработчиком устройства)<br />
|}<br />
<br />
====Стандартные поля====<br />
<br />
====BAR-регистры====<br />
<br />
Каждое устройство может иметь от нуля до шести диапазонов памяти и/или портов ввода/вывода. Физические адреса этих ресурсов хранятся в системно-доступных 32-битных BAR-ячейках (BAR = ''Base Address Register'') конфигурационного пространства по адресам ox10-0x28.<br />
<br />
Важно, что физические адреса назначаются каждому из диапазонов BIOSом, и в любой момент могут быть переназначены операционной системой. Само устройство не может распоряжаться назначением адресов, но только запрашивает у системы требуемый объем памяти или нужное число портов ввода/вывода для каждого из BAR-диапазонов. <br />
<br />
Самый младший бит BAR-регистра всегда равен 0 для памяти и 1 для портов.<br />
<br />
В КолибриОС содержимое BAR-регистров может быть прочитано из пользовательского приложения с помощью подфункции 6 [[SysFn62/ru|сисфункции 62]]. Пример использования этой функции для энумерации и доступа к бортовой памяти PCI-устройств приведен в программе [[PCIDEV]].<br />
<br />
====Регистры состояния и контроля====<br />
<br />
====Дополнительные поля====<br />
<br />
===Адресное пространство===<br />
<br />
====Адресация памяти====<br />
<br />
''(продолжение следует)''<br />
<br />
[[Category:Компьютерные шины]]<br />
[[Category:Аппаратное обеспечение]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Kolibri_tomorrow&diff=3033Kolibri tomorrow2010-08-07T00:19:26Z<p>Art zh: /* Some minor asks: */</p>
<hr />
<div>== Системное ==<br />
<br />
'''The MUST:'''<br />
<br />
'''Full NTFS support [▓▓▓ 50%... ]'''<br />
The reading works good, no writing yet<br />
<br />
'''Mouse driver and cursor arrow perfectising'''<br />
There are still some problems with mice remaining, but nobody cares. By the way: the scrolling is also in this set<br />
<br />
'''GUI improvement'''<br />
No designers ready to make a proper plan at the moment, to say nothig about the executive stuff to carry it out...<br />
<br />
'''To remake the Desktop as a single application'''<br />
Ideally, to bring all the GUI to ''DLL <-> Desktop'' tandem<br />
<br />
'''IPC improvement'''<br />
Completion, perfectising, etc.<br />
<br />
'''Full-featured file opening dialog - OpenDialog [▓▓▓▓▓▓ 99%... Mario]'''<br />
That's to replce the XTree dialog. What's realised:<br />
1) Open file selection; 2) Save file selection; 3) Active directory selection<br />
<br />
'''device enumeration - without system reboot'''<br />
PnP-related stuff<br />
<br />
'''Full-featured installation suite [▓▓ 30%... maximYCH]'''<br />
<br />
'''Full-featuredd HDD boot [▓▓▓▓▓ 75%... ]'''<br />
<br />
'''My-Network-Card support [▓▓▓ 50%...]'''<br />
<br />
'''ext2/ext3 support [▓▓ 50%... turbanoff]'''<br />
<br />
'''LBA48'''<br />
<br />
'''Future plans:'''<br />
<br />
1. Proper LAN system that includes Samba/NFS, PPPoE, network auto-configuration<br /><br />
2. USB/EFI/SMP/ACPI/SCSI/PnP/SATA support<br /><br />
3. VPN<br /><br />
4. PE or PE-related executable format support.<br /><br />
5. NVIDIA driver.<br /><br />
<br />
'''Yet even harder tasks:'''<br />
<br />
1. Windows drivers support<br /><br />
2. ''Forth'' ([[http://board.kolibrios.org/viewtopic.php?f=1&t=1113]]) our own <br /><br />
3. Transparent windows<br /><br />
4. WiFi/GPS/Bluetooh<br /><br />
5. OpenGL<br /><br />
6. DirectX<br /><br />
<br />
== Applications ==<br />
<br />
'''Basics (all items hereafter shall be started with "The full-featured..."'''<br />
<br />
-1. Framework.<br /><br />
0. Desktop =)<br /><br />
1. File manager<br /><br />
2. Graphics editor<br /><br />
3. Media player<br /><br />
4. Browser<br /><br />
5. Archive packer<br /><br />
6. ICQ<br /><br />
7. Command-line shell<br /><br />
8. Basic painting software.<br /><br />
9. Mini-office (at least rtf, doc, txt, cvs, xls)<br /><br />
10. General system buffer<br /><br />
<br />
----<br />
<br />
'''WHAT?/You mad?'''<br />
<br />
1. sound editor - better to port'' Wavela''<br /><br />
2. CD/DVD burner<br /><br />
3. ODBC & Java<br />
4. ADO<br /><br />
5. smthg like ''EasyRecovery'' (to undelete files)<br /><br />
6. Also: s/w like ''Aida32'' and ''SiSoftware Sandra''.<br /><br />
7. An '''Apache'''-compatible web server<br /><br />
8. DBMS server as ''MySQL''<br /><br />
9. Flash(TM)-player<br /><br />
10. A full-featured image editor like ''Photoshop''(its 100%clone, please) or ''Fireworks''<br /><br />
11. Php processor<br /><br />
12. Plenty of fonts<br /><br />
13. MS Windows(TM) emulator<br /><br />
14. Good (3D) games<br /><br />
<br />
==Some minor asks:==<br />
<br />
1. It's better to have <- and -> keys to hide/show windows; Let the system menu hide after the second click.<br /><br />
2. Use Alt+F4 to close all applications (yet not working somewhere);<br /><br />
3. File managers shaw a red banner when one tries to open an unknown file. It's quite hard to hide it even pressing 'X'. Better to close the banner with 'Enter' or/and Alt+F4, that's not to seek for the mouse..., esp if have no one.<br /><br />
4. KolibriOS lets applications to be launched many times. Hence, duplicate run of some diagnostic/testing programs is akin of a bug, esp taking into account there's no window shift of duplicates. I want to block such duplicates or at least shift their windows.<br /><br />
5. About ALT-Tab. One need to press it all the tine to switch between applications, MS Windows(TM) lets simply hold ALT, and only press Tab.<br /><br />
6. I want the ''Undo'' option in Tinipad (Ctrl+Z / Undo) at least for 2-3 last steps (15-20 better). It will greatly stimulate in-system development<br /><br />
7. Hard disk write for all VM<br /><br />
8. Better advertise the OS to recruit new developers<br /><br />
<br />
[[Category:Discussion]]</div>Art zhhttp://wiki.kolibrios.org/index.php?title=Kolibri_tomorrow&diff=3032Kolibri tomorrow2010-08-07T00:18:44Z<p>Art zh: </p>
<hr />
<div>== Системное ==<br />
<br />
'''The MUST:'''<br />
<br />
'''Full NTFS support [▓▓▓ 50%... ]'''<br />
The reading works good, no writing yet<br />
<br />
'''Mouse driver and cursor arrow perfectising'''<br />
There are still some problems with mice remaining, but nobody cares. By the way: the scrolling is also in this set<br />
<br />
'''GUI improvement'''<br />
No designers ready to make a proper plan at the moment, to say nothig about the executive stuff to carry it out...<br />
<br />
'''To remake the Desktop as a single application'''<br />
Ideally, to bring all the GUI to ''DLL <-> Desktop'' tandem<br />
<br />
'''IPC improvement'''<br />
Completion, perfectising, etc.<br />
<br />
'''Full-featured file opening dialog - OpenDialog [▓▓▓▓▓▓ 99%... Mario]'''<br />
That's to replce the XTree dialog. What's realised:<br />
1) Open file selection; 2) Save file selection; 3) Active directory selection<br />
<br />
'''device enumeration - without system reboot'''<br />
PnP-related stuff<br />
<br />
'''Full-featured installation suite [▓▓ 30%... maximYCH]'''<br />
<br />
'''Full-featuredd HDD boot [▓▓▓▓▓ 75%... ]'''<br />
<br />
'''My-Network-Card support [▓▓▓ 50%...]'''<br />
<br />
'''ext2/ext3 support [▓▓ 50%... turbanoff]'''<br />
<br />
'''LBA48'''<br />
<br />
'''Future plans:'''<br />
<br />
1. Proper LAN system that includes Samba/NFS, PPPoE, network auto-configuration<br /><br />
2. USB/EFI/SMP/ACPI/SCSI/PnP/SATA support<br /><br />
3. VPN<br /><br />
4. PE or PE-related executable format support.<br /><br />
5. NVIDIA driver.<br /><br />
<br />
'''Yet even harder tasks:'''<br />
<br />
1. Windows drivers support<br /><br />
2. ''Forth'' ([[http://board.kolibrios.org/viewtopic.php?f=1&t=1113]]) our own <br /><br />
3. Transparent windows<br /><br />
4. WiFi/GPS/Bluetooh<br /><br />
5. OpenGL<br /><br />
6. DirectX<br /><br />
<br />
== Applications ==<br />
<br />
'''Basics (all items hereafter shall be started with "The full-featured..."'''<br />
<br />
-1. Framework.<br /><br />
0. Desktop =)<br /><br />
1. File manager<br /><br />
2. Graphics editor<br /><br />
3. Media player<br /><br />
4. Browser<br /><br />
5. Archive packer<br /><br />
6. ICQ<br /><br />
7. Command-line shell<br /><br />
8. Basic painting software.<br /><br />
9. Mini-office (at least rtf, doc, txt, cvs, xls)<br /><br />
10. General system buffer<br /><br />
<br />
----<br />
<br />
'''WHAT?/You mad?'''<br />
<br />
1. sound editor - better to port'' Wavela''<br /><br />
2. CD/DVD burner<br /><br />
3. ODBC & Java<br />
4. ADO<br /><br />
5. smthg like ''EasyRecovery'' (to undelete files)<br /><br />
6. Also: s/w like ''Aida32'' and ''SiSoftware Sandra''.<br /><br />
7. An '''Apache'''-compatible web server<br /><br />
8. DBMS server as ''MySQL''<br /><br />
9. Flash(TM)-player<br /><br />
10. A full-featured image editor like ''Photoshop''(its 100%clone, please) or ''Fireworks''<br /><br />
11. Php processor<br /><br />
12. Plenty of fonts<br /><br />
13. MS Windows(TM) emulator<br /><br />
14. Good (3D) games<br /><br />
<br />
==Some minor asks:==<br />
<br />
1. Tt's better to have <- and -> keys to hide/show windows; Let the system menu hide after the second click.<br /><br />
2. Use Alt+F4 to close all applications (yet not working somewhere);<br /><br />
3. Filemanagers shaw a red banner when one tries to open an unknown file. It's quite hard to hide it even pressing 'X'. Better to close the banner with 'Enter' or/and Alt+F4, that's not to seek for the mouse..., esp if have no one.<br /><br />
4. KolibriOS lets applications to be launched many times. Hence, duplicate run of some diagnostic/testing programs is akin of a bug, esp taking into account there's no window shift of duplicates. I want to block such duplicates or at least shift their windows.<br /><br />
5. About ALT-Tab. One need to press it all the tine to switch between applications, MS Windows(TM) lets simply hold ALT, and only press Tab.<br /><br />
6. I want the ''Undo'' option in Tinipad (Ctrl+Z / Undo) at least for 2-3 last steps (15-20 better). It will greatly stimulate in-system development<br /><br />
7. Hard disk write for all VM<br /><br />
8. Better advertise the OS to recruit new developers<br /><br />
<br />
[[Category:Discussion]]</div>Art zh