реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> mkernel, новая ртось для ARM
MBR
сообщение Aug 8 2012, 06:47
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Lotor
сообщение Aug 8 2012, 06:56
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Цитата(MBR @ Aug 8 2012, 10:47) *
Долго пытаясь доработать ртоси под свои нужды, понял, что ничего адекватного на рынке просто не существует и решил написать свою.

Можете раскрыть более подробно этот пункт? Чем так Ваша ртос отличается от FreeRTOS, UCOS и других "неадекватных"?


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Aug 8 2012, 07:10
Сообщение #3


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



В папках arch/arm arch/cortex_m3 файлы delay_*.s желательно переименовать в delay_*.S дабы не гневить Eclipse (и ради однообразия тоже).
Go to the top of the page
 
+Quote Post
MBR
сообщение Aug 8 2012, 07:54
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Aug 8 2012, 08:27
Сообщение #5


Познающий...
******

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



Знаете, чего мне не хватает во встраиваемой РТОС? Правильно наличия драйверов и стеков USB (host & master), ETH, CAN, MMC/SD (и прочих накопителей) под самые разнообразные архитектуры, GUI очень даже приветствуется с наличием драйверов под разные контроллеры и дисплеи, и чтобы гарантированно работало, т.к. собрать это по кускам из Инета дело не очень сложное. Но не заработает сразу.

Да, самое главное. Лицензия должна быть полностью свободная.

З.Ы. Это был крик души. Я реалист когда надо, и понимаю, что я написал утопию)))


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
MBR
сообщение Aug 8 2012, 09:13
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
MBR
сообщение Aug 15 2012, 08:34
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



0.1.3

+ pin keyboard module with debounce logic
! sys_alloc, sys_alloc_aligned, sys_free now supported in SYS context
+ push method for debug console

Приступил к написанию документации. Думаю, к концу сентября будет готово.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Aug 15 2012, 12:42
Сообщение #8


Познающий...
******

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



QUOTE (MBR @ Aug 15 2012, 17:34) *
0.1.3

+ pin keyboard module with debounce logic
! sys_alloc, sys_alloc_aligned, sys_free now supported in SYS context
+ push method for debug console

Приступил к написанию документации. Думаю, к концу сентября будет готово.

Ну чтож, ОСи всякие нужны, ОСи всякие важны rolleyes.gif
Поздравляю Вас с этой нелегкой работой rolleyes.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
MBR
сообщение Sep 12 2012, 15:34
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 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

Также выложена первая версия документации.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Sep 12 2012, 16:32
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(MBR @ Sep 12 2012, 18:34) *
Вернулся из отпуска.

Кстати, у меня под Yagarto не собралось...
Go to the top of the page
 
+Quote Post
MBR
сообщение Sep 12 2012, 16:43
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



Цитата(_Артём_ @ Sep 12 2012, 20:32) *
Кстати, у меня под Yagarto не собралось...

Давайте разбираться. Лог? Версия gcc? Я использую codesourcery, как наиболее популярную среду.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Sep 12 2012, 17:17
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 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)
Go to the top of the page
 
+Quote Post
MBR
сообщение Sep 12 2012, 18:13
Сообщение #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. Соглашусь, примеры должны компилироваться без дополнительных настроек.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Sep 12 2012, 20:21
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 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' шуэюЁшЁє■Єё

?
Хотя бы в общих чертах...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 13 2012, 02:35
Сообщение #15


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(_Артём_ @ Sep 13 2012, 02:21) *
Off: как понять вот это:

Код
makefile:94: предупреждение: переопределение команд для цели `.s.o'
makefile:89: предупреждение: старые команды для цели `.s.o' игнорируются


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 15:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01478 секунд с 7
ELECTRONIX ©2004-2016