Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Общение
L4:fiasco
sasamy
Добавлено 14.02.2011 19:27
0
Сообщение: 1
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
Патч для поддержки контроллеров at91sam9g45/m10
http://sasamy.narod.ru/l4fiasco_at91.patch.gz

Код

Start SD card AT91Bootstrap...
Image size: 0xf6000, load_addr: 0x71000000, ep: 0x71000000
relocating image to proper address, dst: 0x71000000, src: 0x72000040, len: 0xf6000

L4 Bootstrapper
Build: #2 Mon Feb 14 18:26:24 MSK 2011, 4.3.3
Scanning up to 64 MB RAM
Memory size is 64MB (70000000 - 74000000)
RAM: 0000000070000000 - 0000000073ffffff: 65536kB
Total RAM: 64MB
mod04: 710d4000-710f5ad8: hello
mod03: 710b2000-710d3ba0: l4re
mod02: 71071000-710b16a4: moe
mod01: 7105f000-71070538: sigma0
mod00: 71013000-7105e3e4: fiasco
Moving 5 modules to 71100000 with offset ed000
moving module 05 { 710d4000-710f5ad8 } -> { 711c1000-711e2ad8 }
moving module 04 { 710b2000-710d3ba0 } -> { 7119f000-711c0ba0 }
moving module 03 { 71071000-710b16a4 } -> { 7115e000-7119e6a4 }
moving module 02 { 7105f000-71070538 } -> { 7114c000-7115d538 }
moving module 01 { 71013000-7105e3e4 } -> { 71100000-7114b3e4 }
Scanning fiasco
Scanning sigma0
Scanning moe --init=rom/hello
Relocated mbi to [0x7100e000-0x7100e0d6]
Loading fiasco
Loading sigma0
Loading moe
find kernel info page...
found kernel info page at 0x70002000
Regions of list regions
[ 70001000, 7000193f] { 940} Kern fiasco
[ 70002000, 7005cfff] { 5b000} Kern fiasco
[ 70090000, 7009d193] { d194} Sigma0 sigma0
[ 70140000, 7018e2db] { 4e2dc} Root moe
[ 71000000, 710123eb] { 123ec} Boot bootstrap
[ 7100e000, 7100e1d3] { 1d4} Root Multiboot info
[ 7119f000, 711e2ad7] { 43ad8} Root Modules Memory
API Version: (87) experimental
Sigma0 config ip:70090000 sp:7100d744
Roottask config ip:70140120 sp:00000000
Starting kernel fiasco at 70001000
Cache config: ON
Hello from Startup::stage2
Initialize page table
Vmem_alloc::init()
Vmem_alloc::TEST
allocate zero-filled page... [0xefc01000] done
free zero-filled page... done
allocate no-zero-filled page... [0xefc02000] done
free no-zero-filled page... done
SERIAL ESC: allocated IRQ 1 for serial uart
Not using serial hack in slow timer handler.
Welcome to Fiasco.OC (arm)!
L4/Fiasco.OC arm microkernel (C) 1998-2011 TU Dresden
Rev: r30 compiled with gcc 4.3.3 for atmel []
Build: #1 Mon Feb 14 18:08:05 MSK 2011

Calibrating timer loop... done.
SIGMA0: Hello!
KIP @ 70002000
allocated 4KB for maintenance structures
SIGMA0: Dump of all resource maps
RAM:------------------------
[0:70000000;70000fff]
[0:7005d000;7008ffff]
[0:7009e000;7013ffff]
[4:70140000;7018efff]
[0:7018f000;7100dfff]
[4:7100e000;7100efff]
[0:7100f000;7119efff]
[4:7119f000;711e2fff]
[0:711e3000;72ffffff]
IOMEM:----------------------
[0:0;6fffffff]
[0:74000000;ffffffff]
MOE: Hello world
MOE: found 48136 KByte free memory
MOE: found RAM from 70000000 to 73000000
MOE: allocated 48 KByte for the page array @0x7005d000
MOE: virtual user address space [0-bfffffff]
MOE: rom name space cap -> [C:501000]
BOOTFS: [7119f000-711c0ba0] [C:503000] l4re
BOOTFS: [711c1000-711e2ad8] [C:504000] hello
MOE: cmdline: moe --init=rom/hello
MOE: Starting: rom/hello
MOE: loading 'rom/hello'
Hello World!
Hello World!
Hello World!
Hello World!


Должно заработать на любом другом из серии at91sam9x, достаточно базовые адреса скорректировать для периферии и внешней памяти.
Спуститься к концу Подняться к началу
Персональная информация
Strijar
Добавлено 17.02.2011 10:17 Сообщение: 2
Strijar
Ранг
5

Группа: Клиенты
Пункты: 1618
Регистрация: 21.04.2009
Пол: Мужчина
А как оно вообще? По сравнению с Линуксом. Сеть есть?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 17.02.2011 11:04 Редактировалось 17.02.2011 11:48 Сообщение: 3
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
Цитата
А как оно вообще? По сравнению с Линуксом.


Некорректно сравнивать микроядро с монолитным ядром - в микроядре практически ничего нет. Там есть надстройка l4re c основными серверами но я пока что разбираюсь с этим со всем, нужно писать драйверы. Сетевой сервер есть, в качестве стека tcp/ip там используется lwip. Вообще мне показалось что как-то неспешно у них развивается надстройка над микроядром и оно больше используется в качестве гипервизора для linux. Есть такой проект genode - http://genode.org/community/wiki он портирован на многие микроядра, но тоже не блещет функциональностью :) хотя там уже портирован qt4 и нативно работает - собственно этого для многих уже было бы достаточно.

PS кстати в качестве гипервизора для linux можно посмотреть на еще одну открытую (gpl) реализацию L4 api Codezero - http://www.l4dev.org/faq
микроядро написано на С что для меня намного приятней :) процессоры arm там основная архитектура в отличии от других, к тому же контора коммерческая с двойным лицензированием - это хороший стимул для качества и genode еще к тому же может работать поверх codezero.
Спуститься к концу Подняться к началу
Персональная информация
Strijar
Добавлено 17.02.2011 13:35 Сообщение: 4
Strijar
Ранг
5

Группа: Клиенты
Пункты: 1618
Регистрация: 21.04.2009
Пол: Мужчина
Спасибо, поизучаю. Микроядра для меня темный лес! ;)
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 17.02.2011 20:19 Сообщение: 5
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
Цитата

микроядро написано на С что для меня намного приятней :) процессоры arm там основная архитектура в отличии от других


В общем на этом все приятности и закончились :)

Цитата

# qemu-system-arm -serial stdio -kernel final.elf -M versatilepb -cpu arm926ELF Loader: Loader image size: 534KB, placed at physical 0xe00000 - 0xe85b2c
Loading the kernel...
Entry point: 0x8000
Copying to range from 0x8000 to 0x1fdf8 of size: 0x17df8
Clearing memory... starting from 1fdf8, size: 0
Copying to range from 0x20000 to 0x2d000 of size: 0xd000
Clearing memory... starting from 2d000, size: 61c8
Copying to range from 0x34000 to 0x38390 of size: 0x4390
Clearing memory... starting from 38390, size: 0

Loading containers...

Loading section .cont.0 from top-level elf file.
Loading .img.0 section image...
Entry point: 0xa0000000
Copying to range from 0x100000 to 0x1008fc of size: 0x8fc
Clearing memory... starting from 1008fc, size: 0
Copying to range from 0x101000 to 0x101000 of size: 0x0
Clearing memory... starting from 101000, size: 1048

Total of 1 images in this container.
Total of 1 container images.
elf-loader: kernel entry point is 0x8000
elf-loader: Starting kernel

code0: start kernel...

code0: Init kernel mappings...
code0: Virtual memory enabled.
code0: Kernel area 0xf0008000 - 0xf0039000 remapped as 49 pages
code0: Kernel built on Feb 17 2011, 19:25:34
code0: Mapping 0x1000 bytes as RX from 0x100000 physical to 0xa0000000 virtual for empty0
code0: Mapping 0x2000 bytes as RW from 0x101000 physical to 0xa0001000 virtual for empty0
Pager (1) faulted on itself. FSR: 0x1f, FAR: 0xa0002034, PC: 0xa00008d4 pte: 0x102ffe CPU0 Exiting.


К тому же исходники для виртуализации самого ядра linux они не дают. В топку однозначно...
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 28.02.2011 15:21 Сообщение: 6
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
fiasco.OC на imx233

Код

PowerPrep start initialize power...
Battery Voltage = 0.58V
No battery or bad battery detected!!!.Disabling battery voltagn
PowerPrep start initialize power...
Battery Voltage = 1.56V
No battery or bad battery detected!!!.Disabling battery voltag1
EMI_CTRL 0x1C084040
FRAC 0x92926192
init_ddr_mt46v32m16_133Mhz
power 0x00820710
Frac 0x92926192
start change cpu freq
hbus 0x00000003
cpu 0x00010001

L4 Bootstrapper
Build: #2 Sun Feb 27 14:27:01 MSK 2011, 4.3.3
Scanning up to 64 MB RAM
Memory size is 64MB (40000000 - 44000000)
RAM: 0000000040000000 - 0000000043ffffff: 65536kB
Total RAM: 64MB
mod04: 410d3000-410f4ad8: hello
mod03: 410b1000-410d2ba0: l4re
mod02: 41070000-410b06a4: moe
mod01: 4105e000-4106f538: sigma0
mod00: 41013000-4105d284: fiasco
Moving 5 modules to 41100000 with offset ed000
moving module 05 { 410d3000-410f4ad8 } -> { 411c0000-411e1ad8 }
moving module 04 { 410b1000-410d2ba0 } -> { 4119e000-411bfba0 }
moving module 03 { 41070000-410b06a4 } -> { 4115d000-4119d6a4 }
moving module 02 { 4105e000-4106f538 } -> { 4114b000-4115c538 }
moving module 01 { 41013000-4105d284 } -> { 41100000-4114a284 }
Scanning fiasco
Scanning sigma0
Scanning moe --init=rom/hello
Relocated mbi to [0x4100e000-0x4100e0d6]
Loading fiasco
Loading sigma0
Loading moe
find kernel info page...
found kernel info page at 0x40002000
Regions of list regions
[ 40001000, 4000193f] { 940} Kern fiasco
[ 40002000, 40058fff] { 57000} Kern fiasco
[ 40090000, 4009d193] { d194} Sigma0 sigma0
[ 40140000, 4018e2db] { 4e2dc} Root moe
[ 41000000, 410123eb] { 123ec} Boot bootstrap
[ 4100e000, 4100e1d3] { 1d4} Root Multiboot info
[ 4119e000, 411e1ad7] { 43ad8} Root Modules Memory
API Version: (87) experimental
Sigma0 config ip:40090000 sp:4100d744
Roottask config ip:40140120 sp:00000000
Starting kernel fiasco at 40001000
Hello from Startup::stage2
Initialize page table
Vmem_alloc::init()
Vmem_alloc::TEST
allocate zero-filled page... [0xefc01000] done
free zero-filled page... done
allocate no-zero-filled page... [0xefc02000] done
free no-zero-filled page... done
Cache config: ON
SERIAL ESC: allocated IRQ 0 for serial uart
Not using serial hack in slow timer handler.
Welcome to Fiasco.OC (arm)!
L4/Fiasco.OC arm microkernel (C) 1998-2011 TU Dresden
Rev: rUNKNOWN compiled with gcc 4.3.3 for mx23 []
Build: #2 Sun Feb 27 08:19:22 MSK 2011

Calibrating timer loop... done.
SIGMA0: Hello!
KIP @ 40002000
allocated 4KB for maintenance structures
SIGMA0: Dump of all resource maps
RAM:------------------------
[0:40000000;40000fff]
[0:40059000;4008ffff]
[0:4009e000;4013ffff]
[4:40140000;4018efff]
[0:4018f000;4100dfff]
[4:4100e000;4100efff]
[0:4100f000;4119dfff]
[4:4119e000;411e1fff]
[0:411e2000;42ffffff]
IOMEM:----------------------
[0:0;3fffffff]
[0:44000000;ffffffff]
MOE: Hello world
MOE: found 48152 KByte free memory
MOE: found RAM from 40000000 to 43000000
MOE: allocated 48 KByte for the page array @0x40059000
MOE: virtual user address space [0-bfffffff]
MOE: rom name space cap -> [C:501000]
BOOTFS: [4119e000-411bfba0] [C:503000] l4re
BOOTFS: [411c0000-411e1ad8] [C:504000] hello
MOE: cmdline: moe --init=rom/hello
MOE: Starting: rom/hello
MOE: loading 'rom/hello'
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!


Первый раз делаал стандалоне приложение для imx233 - elftosb удобнейшая штука оказалась, не надо ниочем беспокоиться - подсунул ему elf образ он сам генерирует образ с правильными адресами в памяти, грузи его потом откуда хочешь - mmc или nand...
Спуститься к концу Подняться к началу
Персональная информация
alman
Добавлено 28.02.2011 22:44 Сообщение: 7
alman
2

Пункты: 740
Регистрация: 04.02.2011
Пол: Мужчина
Цитата

К тому же исходники для виртуализации самого ядра linux они не дают. В топку однозначно...


Ээх. Если бы интерфейс системных вызовов Fiasco совпадал с Pistachio, я бы перешёл на Fiasco, ведь Вы его уже портировали на at91sam9g45. Увы, переделывать 90 тыс. строк кода рука не поднимается. Хотя системно-зависимого кода у меня не так уж и много.

А вот разработчикам, кто не хочет по каким-то причинам использовать Linux, я бы порекомендовал попробовать Fiasco. Модель, предлагаемая L4, сулит очень хорошие возможности - можно сильно сэкономить системные ресурсы за счёт минимизации переключении контекста и ухода от использования критических секций - в правильно спроектированной программе они просто не нужны. Достаточно просто представить систему как множество сервисов, которые обмениваются сообщениями и на основе этого проектировать систему любой сложности.

А Linux... его запускают поверх микроядра не от хорошей жизни, а потому что нет нативных сервисов и драйверов. А народу нравится - Linux -- круто, микроядро -- круто, получается вдвойне круто. :)
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 01.03.2011 09:03 Сообщение: 8
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
Цитата

Ээх. Если бы интерфейс системных вызовов Fiasco совпадал с Pistachio, я бы перешёл на Fiasco, ведь Вы его уже портировали на at91sam9g45. Увы, переделывать 90 тыс. строк кода рука не поднимается. Хотя системно-зависимого кода у меня не так уж и много.


Это говорит о том что система плохо спроектирована - тот же genode работает на любом L4 подобном микроядре.

Цитата

А Linux... его запускают поверх микроядра не от хорошей жизни, а потому что нет нативных сервисов и драйверов. А народу нравится - Linux -- круто, микроядро -- круто, получается вдвойне круто. :)


Скорость приложений на паравиртуальизованом linux отличается от нативного не больше 4 %, на arn-ах скорей всего разница еще меньше, так что нет особого смысла изобретать велосипеды. В genode например даже при том что они используют драйверы linux через прослойку DDE (на разработку драйверов они практически не тратят время) до сих пор нет полной posix совместимой среды - это огромный объем работы вы наверняка знаете об этом. linux и без гипервизора достаточно стабилен - а насколько стабильно работает ваш код 90 тыс строк который кроме вас никто не видел и не запускал ? я думаю вам даже до нативного linux оочень далеко.
Спуститься к концу Подняться к началу
Персональная информация
alman
Добавлено 01.03.2011 12:25 Сообщение: 9
alman
2

Пункты: 740
Регистрация: 04.02.2011
Пол: Мужчина
Цитата

Это говорит о том что система плохо спроектирована - тот же genode работает на любом L4 подобном микроядре.


Нет! Моя система спроектирована хорошо! Факт, что genode работает на любом L4 подобном микроядре, говорит о том, что разработчики использовали IDL для описания интерфейсов. В моём случае системные вызовы оптимизированы вручную. Если уж и буду использовать когда-либо IDL, то наверняка это будет похоже на COM технологию, но никак не то, что предлагается сейчас вместе с L4.

Цитата

Скорость приложений на паравиртуальизованом linux отличается от нативного не больше 4 %, на arn-ах скорей всего разница еще меньше, так что нет особого смысла изобретать велосипеды.


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

Цитата

В genode например даже при том что они используют драйверы linux через прослойку DDE (на разработку драйверов они практически не тратят время) до сих пор нет полной posix совместимой среды - это огромный объем работы вы наверняка знаете об этом.


К примеру, при переносе на L4 драйвер Floppy диска (заимствован из FreeDOS) очень упростился - выкорчевана работа с прерываниями и перенесена в основной цикл обработки сообщений. В результате драйвер стал в полтора раза проще, понятнее и... стабильнее.

Единственная проблема, касающаяся микроядерного подхода - это системный вызов select (и вообще использование сокетов как файловые дескрипторы). Поскольку сервис файловой системы и сервис TCP/IP находятся в разных модулях, то возникает проблема, когда select ждёт дескрипторы сокетов (сетевая подсистема) и дескрипторы устройств (файловая система). Вот, пожалуй, единственная проблема микроядерного дизайна. Обратная сторона проблемы - возможность модульной компоновки системы - можно использовать модули в любом сочетании.

Впрочем, select нужен только для совместимости с POSIX, без него можно во многих случаях обойтись, используя многопоточность.

Цитата
linux и без гипервизора достаточно стабилен - а насколько стабильно работает ваш код 90 тыс строк который кроме вас никто не видел и не запускал ? я думаю вам даже до нативного linux оочень далеко.


Это несерьёзно сравнивать. Сколько человеко-лет затрачено на разработку Linux? А как насчёт вливаний кода в Linux компаниями IBM, Novell и десятком других. Мне хотя бы десятитысячную долю от того, что затрачено на Linux, тогда можно и сравнить.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 01.03.2011 13:38 Редактировалось 01.03.2011 14:06 Сообщение: 10
sasamy
4.71

Пункты: 83552
Регистрация: 14.08.2009
Цитата

В моём случае системные вызовы оптимизированы вручную.


По моему это огромный минус - переносимость кода должна иметь приоритет над эффективностью.

Цитата

Я утверждаю, что на многопроцессорных системах мой подход даст прирост производительности по сравнению даже с невиртуализированным Linux. Пока классическая система будет раскручивать спинлоки, Xameleon сделает много полезных вещей.


Странное заявление - многопоточные приложения никто не мешает писать и под Linux. Для справки - начиная с версии 2.6.37 ядро linux можно собрать полностью без BKL, а RT патч для ядра например полностью заменяет все спинлоки rt-мьютексами а все обработчики прерываний исполняются в отдельных потоках.

Цитата

К примеру, при переносе на L4 драйвер Floppy диска (заимствован из FreeDOS) очень упростился - выкорчевана работа с прерываниями и перенесена в основной цикл обработки сообщений. В результате драйвер стал в полтора раза проще, понятнее и... стабильнее.


Вот когда вы доберетесь хотя бы до работы с USB (я уже не говорю про различные аудио/видео мультимедиа ускорители и кодеры/декодеры и графические ускорители) тогда и будет смысл о чем то говорить. Дискету я последний раз видел пару лет назад случайно у жены.

Цитата

Это несерьёзно сравнивать. Сколько человеко-лет затрачено на разработку Linux? А как насчёт вливаний кода в Linux компаниями IBM, Novell и десятком других. Мне хотя бы десятитысячную долю от того, что затрачено на Linux, тогда можно и сравнить.


Несереьезно противопостовлять вашу ОС Linux - ни по скорости ни по функционалу, откуда будут у вас "вливания" если система закрытая ?
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Общение