|
mkernel, новая ртось для ARM |
|
|
|
Aug 8 2012, 06:47
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748

|
Долго пытаясь доработать ртоси под свои нужды, понял, что ничего адекватного на рынке просто не существует и решил написать свою. Вот что получилось: MKernel is embedded RTOS, based on microkernel architecture. It's designed for ARM microprocessors, however, can be easily ported to any 32bit MCU. Features: - BSD License, royalty free, open source. - Tickless. For system scheduling used 1 HPET timer and RTC. If RTC is unavailable, another HPET timer can be used for RTC emulation (with full RTC functionality) - Hardware abstraction.RTOS is providing common interface for drivers. - Standart microkernel syncronization: mutexes, events, semaphores, queues. - Nested mutex priority inheritance - Embedded dynamic memory manager, with ability of nested memory pools for threads, dedicated system pool. Aligned malloc calls inside of any pools - Safe and MPU ready. All supervisor-specific calls are wrapped around swi/svc calls for context rising. - Embedded libraries: * printf/sprintf. Around 1k of code. * time routines. POSIX-light * single-linked list, double linked list, ring buffer, block ring buffer * random number generation: hardware (if supported) or software - Error handling: * kill thread on system error, print error, if configured * restart system on critical error, memory dump if configured * handle error exceptions, decode address (if supported) and exception code - Lot of debug features: * memory dumps * object marks * thread profiling: name, uptime, stack allocated/current/used * memory profiling: red-markings, pool free/allocated size, objects fragmentation * stack profiling: supervisor allocated/current/used. Plus for arm7 - irq, fiq, abt * configurable debug console - Supported hardware: * ARM7 * cortex-m3, drivers for:STM32 F2 (gpio, uart, rcc, timer, dma, rand) Cortex-M3 features: - Native SVC and pendSV support ARM7 features: - Nested interrupts - FIQ support - pendSV emulation, when returning to user/system context И сразу из минусов: документация еще пока в стадии разработки, надеюсь, к концу сентября управлюсь. Примеры, надеюсь, на этой неделе будут готовы. На данный момент поддерживается только gcc. Ссылка на проект на github: https://github.com/alexeyk13/mkernel
|
|
|
|
|
Aug 8 2012, 06:56
|
Местный
  
Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866

|
Цитата(MBR @ Aug 8 2012, 10:47)  Долго пытаясь доработать ртоси под свои нужды, понял, что ничего адекватного на рынке просто не существует и решил написать свою. Можете раскрыть более подробно этот пункт? Чем так Ваша ртос отличается от FreeRTOS, UCOS и других "неадекватных"?
--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
|
|
|
|
|
Aug 8 2012, 07:54
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748

|
Цитата(Lotor @ Aug 8 2012, 10:56)  Можете раскрыть более подробно этот пункт? Чем так Ваша ртос отличается от FreeRTOS, UCOS и других "неадекватных"? В сторону ucos я не смотрел принципиально - там gpl и этот недостаток для эмбеда перевесит все остальное. Основной недостаток Free rtos, tn-kernel и им подобных, на мой взгляд, - тоже идеологический - это очень сильное абстрагирование от архитектуры, поддержка 8битников и т.п., в результате чего возможности аппаратной части используются не на полную. А из конкретных - различия, практически, по всем пунктам. Особенно, использование системных тиков для шедулера задач. Из плюсов free rtos - безусловно, размер кода (правда, если во free rtos включить все, что есть в mkernel, я сомневаюсь, что получится меньше). Соглашусь, слово "адекватный", пожалуй, слишком грубо. Цитата(IgorKossak @ Aug 8 2012, 11:10)  В папках arch/arm arch/cortex_m3 файлы delay_*.s желательно переименовать в delay_*.S дабы не гневить Eclipse (и ради однообразия тоже). Спасибо за совет, сделаю в следующем коммите. Я делал как раз ради различия, чтобы было понятно, что файл обрабатывается препроцессором или нет.
Сообщение отредактировал MBR - Aug 8 2012, 07:55
|
|
|
|
|
Aug 8 2012, 08:27
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Знаете, чего мне не хватает во встраиваемой РТОС? Правильно наличия драйверов и стеков USB (host & master), ETH, CAN, MMC/SD (и прочих накопителей) под самые разнообразные архитектуры, GUI очень даже приветствуется с наличием драйверов под разные контроллеры и дисплеи, и чтобы гарантированно работало, т.к. собрать это по кускам из Инета дело не очень сложное. Но не заработает сразу.
Да, самое главное. Лицензия должна быть полностью свободная.
З.Ы. Это был крик души. Я реалист когда надо, и понимаю, что я написал утопию)))
--------------------
Выбор.
|
|
|
|
|
Aug 8 2012, 09:13
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748

|
Цитата(haker_fox @ Aug 8 2012, 12:27)  Знаете, чего мне не хватает во встраиваемой РТОС? Правильно наличия драйверов и стеков USB (host & master), ETH, CAN, MMC/SD (и прочих накопителей) под самые разнообразные архитектуры, GUI очень даже приветствуется с наличием драйверов под разные контроллеры и дисплеи, и чтобы гарантированно работало, т.к. собрать это по кускам из Инета дело не очень сложное. Но не заработает сразу. Я двигаюсь именно в эту сторону. Драйверы USB (device, scsi, mass storage), SD-CARD у меня готовы и встроены в mkernel (но не в то, что есть на гитхабе). В добавок есть абстрактный драйвер storage, с конвеером на базе data queue. Просто на данный момент я не определился с их распространением - если достаточно разовьется идея донаторства, я выложу их в open source, если же нет, буду продавать отдельно. --- 0.1.2 - added examples for STM32 F2 - optimized software rand - renamed all .s to .S --- в примере создаются две простейшие задачи - одна моргает светодиодом, другая выводит аптайм каждую секунду. Доступна также встроенная отладочная консоль для профайлинга (помощь - h)
Сообщение отредактировал MBR - Aug 8 2012, 09:14
|
|
|
|
|
Sep 12 2012, 15:34
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748

|
Вернулся из отпуска.
0.1.4 + new module: software timers, running in independent thread + keyboard module new functions: keyboard_wait_for_key, keyboard_has_messages ! exception handling improved: - detection of caller context (SYS/thread), instruction address, caused problem - if thread context, thread will be terminated, if SYS, system will be restarted - SVC call while interrupts are disabled error decoded and processed, instead of general hard fault - configurable option to halt system on fatal error, instead of rebooting
Также выложена первая версия документации.
|
|
|
|
|
Sep 12 2012, 16:43
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748

|
Цитата(_Артём_ @ Sep 12 2012, 20:32)  Кстати, у меня под Yagarto не собралось... Давайте разбираться. Лог? Версия gcc? Я использую codesourcery, как наиболее популярную среду.
|
|
|
|
|
Sep 12 2012, 17:17
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(MBR @ Sep 12 2012, 19:43)  Давайте разбираться. Лог? Версия gcc? Я использую codesourcery, как наиболее популярную среду. Вот такой лог: Цитата p:\Chuzhoj_cod\alexeyk13-mkernel-fc86765\example\stm32f2>make makefile:94: яЁхфєяЁхцфхэшх: яхЁхюяЁхфхыхэшх ъюьрэф фы Ўхыш `.s.o' makefile:89: яЁхфєяЁхцфхэшх: ёЄрЁ√х ъюьрэф√ фы Ўхыш `.s.o' шуэюЁшЁє■Єё AS_C: ../../arch/cortex_m3/startup_cortexm.s In file included from ./../../arch/cortex_m3/startup_cortexm.s:31:0: ../../arch/hw_config.h:41:31: fatal error: hw_config_stm32f2.h: No such file or directory compilation terminated. make: *** [startup_cortexm.o] ╬°шсър 1
p:\Chuzhoj_cod\alexeyk13-mkernel-fc86765\example\stm32f2> Версия: Цитата p:\Chuzhoj_cod\alexeyk13-mkernel-fc86765\example\stm32f2>arm-none-eabi-gcc -v Using built-in specs. COLLECT_GCC=arm-none-eabi-gcc COLLECT_LTO_WRAPPER=c:/yagarto/bin/../libexec/gcc/arm-none-eabi/4.6.2/lto-wrappe r.exe Target: arm-none-eabi Configured with: ../gcc-4.6.2/configure --target=arm-none-eabi --prefix=/home/ya garto/install --disable-nls --disable-shared --disable-threads --with-gcc --with -gnu-ld --with-gnu-as --with-dwarf2 --enable-languages=c,c++ --enable-interwork --enable-multilib --with-newlib --with-headers=../newlib-1.19.0/newlib/libc/incl ude --disable-libssp --disable-libstdcxx-pch --disable-libmudflap --disable-libg omp -v Thread model: single gcc version 4.6.2 (GCC)
|
|
|
|
|
Sep 12 2012, 18:13
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748

|
Цитата ../../arch/hw_config.h:41:31: fatal error: hw_config_stm32f2.h: No such file or directory Собственно, как описано в главе getting started, необходимо скопировать файл hw_config_stm32f2.h из каталога template в рабочий каталог проекта. Путь к нему должен быть прописан в Makefile Я завтра добавлю его в example. Соглашусь, примеры должны компилироваться без дополнительных настроек.
|
|
|
|
|
Sep 12 2012, 20:21
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(MBR @ Sep 12 2012, 21:13)  Собственно, как описано в главе getting started, необходимо скопировать файл hw_config_stm32f2.h из каталога template в рабочий каталог проекта. Путь к нему должен быть прописан в Makefile Нечитал, потому как Цитата(MBR @ Sep 12 2012, 21:13)  примеры должны компилироваться без дополнительных настроек. . Off: как понять вот это: Цитата makefile:94: яЁхфєяЁхцфхэшх: яхЁхюяЁхфхыхэшх ъюьрэф фы Ўхыш `.s.o' makefile:89: яЁхфєяЁхцфхэшх: ёЄрЁ√х ъюьрэф√ фы Ўхыш `.s.o' шуэюЁшЁє■Єё ? Хотя бы в общих чертах...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|