Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вышла FreeRTOS V4.0.5 ... 8.2.3
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > FreeRTOS
Страницы: 1, 2, 3, 4
Alechek
Согласен, на нормальный документ не тянет. Но лучше что-то чем ничего - инет не всегда бывает под рукой и не всегда с отличной скоростью. К тому же, как правильно было замечено, иногда достаточно прочитать лишь один раз...
Chudik
Цитата(Alechek @ Feb 25 2008, 23:56) *
Надо? Сделаем! smile.gif
upload/OS/FreeRTOS/FreeRTOS_API(site)_4.7.2.chm

Спасибо большое.
Хотя уже не надо crying.gif Автор eval board, которую мы будем использовать, утверждает, что с их web сервером и поддержкой FAT влезет ещё буквально пара задач с минимальным стеком и всё. А при обычном программировании всё влезает с запасом, а посему рекомендует freeRTOS не использовать. А хочется использовать обе эти фичи.
Eval board на базе LPC2138 с 32к ОЗУ.

Цитата
А насчет аккуратности это по большему счеты не ко мне..
За 35$ как я понимаю, можно получить то же самое smile.gif

Не исключено wacko.gif
zltigo
Цитата(Chudik @ Feb 27 2008, 09:49) *
А при обычном программировании всё влезает с запасом, а посему рекомендует freeRTOS не использовать.

Дивная рекомендация smile.gif прямые неизбежные затраты памяти на задачу в моей реализации FreeRTOS можно свести к TCB 56(пятьдесят шесть байт) + контекст. Стек, он по любому стек. В родной реализации TCB на 8-16 байтов поболее. Это конечно, ставит жирный крест smile.gif на использовании операционных систем smile.gif smile.gif smile.gif
Попытки хоть как-то приемлимо заставить работать TCP/IP стек при "обычном программировании" тоже требуют реурсов памяти. Файловая система вообще к количеству задач в общем случае никакого отношения не имеет...
Цитата
Автор eval board..

Не этой платы?:
http://forum.ixbt.com/topic.cgi?id=48:6017
И не этот разработчик?
http://electronix.ru/forum/index.php?showt...905&hl=heap

P.S.
Я, лично, использую операционные системы для экономии памяти, а не наоборот.
meister
Точу FreeRTOS smile.gif

Было
Код
#define portDISABLE_INTERRUPTS()    __disable_interrupt()
#define portENABLE_INTERRUPTS()        __enable_interrupt()
#define portENTER_CRITICAL()        vPortEnterCritical()
#define portEXIT_CRITICAL()            vPortExitCritical()

void vPortEnterCritical( void )
{
    __disable_interrupt();
    ....
}
/*-----------------------------------------------------------*/

void vPortExitCritical( void )
{
    ...
            __enable_interrupt();
}


Стало
Код
#include "irq.h"

#define portDISABLE_INTERRUPTS()    my_disable_IRQ()
#define portENABLE_INTERRUPTS()        my_enable_IRQ()
#define portENTER_CRITICAL()        vPortEnterCritical()
#define portEXIT_CRITICAL()            vPortExitCritical()

void vPortEnterCritical( void )
{
    portDISABLE_INTERRUPTS();
   ....
}
/*-----------------------------------------------------------*/

void vPortExitCritical( void )
{
            ....
            portENABLE_INTERRUPTS();
}


my_disable_IRQ() и my_enable_IRQ() взял из scmRTOS smile.gif Если это правильно, может, об этом надо сказать Автору?
IgorKossak
Ну и в чём суть двойного переопределения?
На мой взгляд было лучше.
zltigo
Цитата(meister @ Mar 4 2008, 12:59) *
Стало

Ну и какого, абсолютно нормальные intrinsic functions были заменены некими самоделками? У меня есть, например свои варианты критических секций - без запрещения FIQ, или без глобального счетчика вложенности критических секций. А Ваша цель-то какая?
meister
Цитата(zltigo @ Mar 4 2008, 14:44) *
А Ваша цель-то какая?


Раньше сбивалось, а теперь не сбивается - тот вариант что был запрещает FIQ.

Цитата(zltigo @ Mar 4 2008, 14:44) *
без запрещения FIQ


Теперь у меня тоже не запрещает FIQ.
zltigo
4.8.0 Полуофициальная нарисовалась.
http://mesh.dl.sourceforge.net/sourceforge...eRTOSV4.8.0.zip
Документации нет. Изменения внутри существенные, снаружи мелочи. Надо исходники вычитывать...
klen
Цитата(zltigo @ Mar 29 2008, 01:58) *
Изменения внутри существенные, снаружи мелочи. Надо исходники вычитывать...

Интересненько... будем лопатить..
sla000
Оцените плиз мой код для оценки использования кучи FreeRTOS, родных функций для этого я не нашел. Этот код я вставил в heap_2.c:

Код
/// Свободная куча
static uint32 FreeHeap;

/// Минимальное свободное место в куче
static uint32 FreeHeapMin = 0xFFFFFFFF;

/// Узнать минимальный размер свободного места в куче
uint32 GetFreeHeapMin( void )
{
    return FreeHeapMin;
}

/// Обновить размер текущей кучи
uint32 GetFreeHeap( void )
{
    xBlockLink * pblock;

    // указывает на стартовый блок
    pblock = &xStart;

    FreeHeap = 0;

    while( pblock != &xEnd )
    { // пока не наткнулись на xEnd
        FreeHeap += pblock->xBlockSize;
        pblock = pblock->pxNextFreeBlock;
    }

    if( FreeHeap < FreeHeapMin )
    { // Нашли минимум свободного места в куче
        FreeHeapMin = FreeHeap;
    }

    return FreeHeap;
}


GetFreeHeap() вставил в конце функций prvHeapInit(), pvPortMalloc() и vPortFree(). После этого просто периодически вызываю GetFreeHeapMin() каждые секунд 5 и вывожу в DBGU (Юзаю порт FreeRTOS для ARM).
zltigo
Цитата(sla000 @ Mar 31 2008, 05:47) *
..код для оценки использования кучи FreeRTOS..

Менеджеры памяти первыми у меня пошли под нож. То, что в комплекте вообще не менежеры и "заглушки" - нет даже элементарно реализуемых вещей, вроде склейки свободных блоков в один, вообще списка занятых блоков, управления памятью в нескольких первичных блоках, захвата всей свободной памяти, ...
klen
Цитата(zltigo @ Mar 31 2008, 09:31) *
Менеджеры памяти первыми у меня пошли под нож. То, что в комплекте вообще не менежеры и "заглушки" - нет даже элементарно реализуемых вещей, вроде склейки свободных блоков в один, вообще списка занятых блоков, управления памятью в нескольких первичных блоках, захвата всей свободной памяти, ...


я подумал что это специально так сделано. чтоб самому быстренько доделывать. Склейка вроде бы есть, но я ее всеравно сам сделел. Потом понял что для моих задач менежмент памяти вообще не нужен. проще оказалось все сразу впихнуть в озу и жить с этим.
zltigo
Цитата(klen @ Mar 31 2008, 17:24) *
Потом понял что для моих задач менежмент памяти вообще не нужен.

Грамотный менеджмент памяти полезен всегда, даже если память динамически не освобождается. Банально посмотреть на кто сколько памяти скушал и, например, покопаться по очередям/буферам не имея листинга для этой конкретной сборки, контексты задач/стеки видны...
zltigo
Официальная декларация фич появилась:
Changes between V4.7.2 and V4.8.0 released March 26 2008

+ Added a Virtex4 PowerPC 405 port and demo application.
+ Added optional stack overflow checking and new
uxTaskGetStackHighWaterMark() function.
+ Added new xQueueIsQueueEmptyFromISR(), xQueueIsQueueFullFromISR() and
uxQueueMessagesWaitingFromISR() API functions.
+ Efficiency improvements to the Cortex-M3 port layer. NOTE: This
requires that an SVC handler be installed in the application.
+ Efficiency improvements to the queue send and receive functions. <--- Этим стоит воспользоваться
+ Added new trace macros. These are application definable to provide
a flexible trace facility.
+ Implemented the configKERNEL_INTERRUPT_PRIORITY within the Keil Cortex
M3 port layer (bringing it up to the same standard as the IAR and GCC
versions).
+ Ports that used the arm-stellaris-eabi-gcc tools have been converted to
use the arm-non-eabi-gcc tools.
Alechek
Выложил обновленнную копию сайта с API на фтп
zltigo
Версия обозванная 5.0.0 официально объявилась

+ Stack overflow checking.
+ Powerful kernel trace macros.
+ Task hook functions.

Other news:

+ A port and demo application are now provided for the Xilinx Virtex4 PowerPC.
+ For the second year running, FreeRTOS.org will be presenting classes at the Microchip Masters Worldwide Conference in Phoenix, Az.
+ OpenRTOS licensing is now available on a product line basis - simplifying further the administration for those requiring commercial licenses, development or support.

Go to http://www.FreeRTOS.org for full information.


*** VERY IMPORTANT INFORMATION ON UPGRADING TO FREERTOS.ORG V5.0.0 ***

The parameters to the functions xQueueSendFromISR(), xQueueSendToFrontFromISR(), xQueueSendToBackFromISR() and xSemaphoreGiveFromISR() have changed. You must update all calls to these functions to use the new calling convention! Your compiler might not issue any type mismatch warnings!

See http://www.FreeRTOS.org/upgrading.html for full information.

It is understood that this change may cause some minor inconvenience. The change has been made in response to numerous change requests, and makes this family of API functions consistent with the calling convention used by xQueueReceiveFromISR(). I hope you agree that the benefits outweigh the inconvenience.

***Remember*** - all calls to xQueueSendFromISR(), xQueueSendToFrontFromISR(), xQueueSendToBackFromISR() and xSemaphoreGiveFromISR() MUST be updated to use the new calling convention.
zltigo
V5.0.2
+ Updated the PIC32 port to allow queue API calls to be used from
interrupts above the kernel interrupt priority, and to allow full
interrupt nesting. Task stack usages has also been reduced.
+ Added a new PowerPC port that demonstrates how the trace macros can be
used to allow the use of a floating point co-processor. The
traceTASK_SWITCHED_OUT() and traceTASK_SWITCHED_INT() macros are used to
save and restore the floating point context respectively for those tasks
that actually use floating point operations.
+ BUG FIX: The first PPC405 port contained a bug in that it did not leave
adequate space above the stack for the backchain to be saved when a task
started to execute for the first time.
+ Updated queue.c to add in the means to allow interrupt nesting and for
queue API functions to be called from interrupts that have a priority
above the kernel priority. This is only supported on PIC32 ports thus
far.
+ Fixed the compiler warnings that were generated when the latest version
of WinAVR was used.
+ Remove all inline usage of 'inline' from the core kernel code.
+ Added the queue registry feature. The queue registry is provided as a
means for kernel aware debuggers to locate queue definitions. It has no
purpose unless you are using a kernel aware debugger. The queue registry
will only be used when configQUEUE_REGISTRY_SIZE is greater than zero.
+ Added the ST Cortex-M3 drivers into the Demo/Common/Drivers directory to
prevent them from having to be included in multiple demos.
+ Added a Keil STM32 demo application.
+ Changed the blocktim.c test files as it is no longer legitimate for all
ports to call queue API functions from within a critical section.
+ Added the IntQueue.c test file to test the calling of queue API functions
from different interrupt priority levels, and test interrupt nesting.
klen
это хорошо
за что я люблю FreeRTOS?
за то что она как пластилин - изогнуть мехом вов нутрь можно
cpl
Цитата(zltigo @ Feb 29 2008, 20:11) *
P.S.
Я, лично, использую операционные системы для экономии памяти, а не наоборот.


Поясните пожалуйста, как это ?
В чем экономия в отличии от системы без ОС ? wacko.gif
AVR
Цитата(cpl @ Jun 29 2008, 21:35) *
Поясните пожалуйста, как это ?
В чем экономия в отличии от системы без ОС ? wacko.gif
Да, мне тоже интересно, где экономия памяти... Но одно можно сказать, время ОЧЕНЬ экономится - а это порой ещё важнее чем несчастные сэкономленные килобайты памяти...
zltigo
Цитата(AVR @ Jun 30 2008, 01:04) *
Да, мне тоже интересно, где экономия памяти...

У меня экономия памяти на задачах которые в данный момент не работают (совсем не работают - не созданы) и задачах количество которых меняется в заисимости от конфигурации. Например, задача начальной инициализации отрабатывает и умирает навсегда. Задачи калибровок и самодиагностики работают (cуществуют) только тогда, когда не запущена задача консоли оператора,....
Desenix
с данной ОС совсем не знаком, но тут прочитал что у нее есть менеджер памяти, а кто нибудь может кратенько объяснить как он устроен ? я не представляю себе такой менеджер без поддержки MMU в процессоре. Ведь фрагментация возникать должна, а как с ней бороться ? если указатели уже розданы задачам.
PS: подумываю об использовании ОС.
zltigo
Цитата(Desenix @ Jul 2 2008, 20:20) *
..а кто нибудь может кратенько объяснить как он устроен ?

Проще посмотреть исходник там несколько десятков строчек. Все минималистично до безобразия - надо использовать более сложный со склейкой освобожденных блоков и поиском более подходящих а не первого попавшегося. С дефрагментацией бороться только организационно - запрос блоков памяти фиксированных размеров, проход через освобождение нескольких последних выделенных блоков....
Desenix
по поводу фрагментации, у меня еще мысль возникла, если использовать не просто прямой указатель на блок памяти, а указатель на указатель. Тогда второй(системный) можно перемещать вместе с блоком памяти, а первый(пользовательский) изменятся не будет. Правда все это надо учесть при написании кода.
cpl
Цитата(zltigo @ Jul 1 2008, 20:26) *
У меня экономия памяти на задачах которые в данный момент не работают (совсем не работают - не созданы) и задачах количество которых меняется в заисимости от конфигурации. Например, задача начальной инициализации отрабатывает и умирает навсегда. Задачи калибровок и самодиагностики работают (cуществуют) только тогда, когда не запущена задача консоли оператора,....


Тепрь понятно что имелось в виду, Выжимка из всего что есть....
zltigo
Цитата(cpl @ Jul 2 2008, 21:22) *
Выжимка из всего что есть....

Естественно sad.gif внутренний RAM медленно растущий ресурс у контроллеров sad.gif. Внешний - сразу громоздкость и почти всегда проигрыш по скорости sad.gif.
MrYuran
Цитата(Alechek @ Apr 7 2008, 16:13) *
Выложил обновленнную копию сайта с API на фтп

Чё-то вот не открывается...
И chm to pdf его не понимает...
MrYuran
А как его вообще оттуда ободрать?
Телепортом чтоли каким?
Давно хочу научиться, всё никак...
Alechek
Цитата(MrYuran @ Sep 22 2008, 18:32) *
А как его вообще оттуда ободрать?
Телепортом чтоли каким?
Давно хочу научиться, всё никак...

Мда, действительно не открывался...
Размер на фтп не совпадает с оригиналом (меньше)
Перезалил.

Качал действительно телепортом.
Потом копмилил в chm _http://htm2chm.by.ru/
zhz
Цитата(MrYuran @ Sep 22 2008, 15:32) *
А как его вообще оттуда ободрать?
Телепортом чтоли каким?
Давно хочу научиться, всё никак...


Offline Explorer-ом удобно.
Вот свежеиспеченный: http://rapidshare.com/files/147975841/FreeRTOS_5.0.4.chm | 5655 KB
zltigo
Changes between V5.0.3 and V5.0.4 released September 22, 2008
+ Completely re-written port for ColdFire GCC.
+ Bug fix: All Cortex M3 ports have a minor change to the code that sets
the pending interrupt.
+ Some header files require that FreeRTOS.h be included prior to their
inclusion. #error message have been added to all such header file
informing users to the cause of the compilation error should the headers
not be included in the correct order.
zltigo
На днях, похоже, разродятся версией 5.10, но похоже, что с точки зрения ядра будет очередная пустышка sad.gif
zhz
Release Name: V5.1.0

Notes:

--------------------------------------------------------------------------------
Changes:
Changes between V5.0.4 and V5.1.0 released October 24, 2008

+ Added a new port and demo application for the ColdFire V2 core using the
CodeWarrior development tools.
+ Replaced the ARM7 demo that used the old (and now no longer supported)
Keil compiler with a new port that uses the new Keil/RVDS combo.
+ Stack overflow checking now works for stacks that grow up from low
memory (PIC24 and dsPIC).
+ BUG FIX - set the PIC32 definition of portSTACK_GROWTH to the correct
value of -1.
+ MSP430 port layers have been updated to permit tasks to place the
microcontroller into power down modes 1 to 3. The demo applications have
likewise been updated to demonstrate the new feature.
+ Replaced the two separate MSP430/Rowley port layers with a single and more
flexible version.
+ Added more contributed ports, including ports for NEC and SAM9
microcontrollers.
+ Changed the linker script used in the LPC2368 Eclipse demo.
IgorKossak
Цитата(zhz @ Oct 28 2008, 13:38) *
Release Name: V5.1.0

Похоже, что с чувством юмора у разработчиков всё в порядке, если при столь минорных изменениях присваивается столь мажорный номер релиза.
HARMHARM
Цитата(IgorKossak @ Oct 29 2008, 18:28) *
Похоже, что с чувством юмора у разработчиков всё в порядке, если при столь минорных изменениях присваивается столь мажорный номер релиза.

Судя по всему - из за ошибки в проверке стека. Было большое обсуждение на их форуме.
zltigo
Цитата(HARMHARM @ Nov 3 2008, 09:18) *
Судя по всему - из за ошибки в проверке стека.

Совершенно не критическая и явная мелочевка для дивного PIC порта. При латании наворотили макросов и тупо завели еще один указатель в TCB..... Не тянет на мажор никак.
zhz
Release Name: V5.1.1

Notes:

--------------------------------------------------------------------------------
Changes between V5.1.0 and V5.1.1 released November 20, 2008

+ Added Coldfire MCF52233 WEB server demo using GCC and Eclipse.
+ Added IAR MSP430 port and demo.
+ Corrected several compiler time issues that had crept in as tool versions
change.
+ Included FreeRTOS-uIP - a faster uIP. This is not yet complete.
zltigo
Changes between V5.1.1 and V5.1.2 released February 9th 2009
 + Added NEC V850ES port and demo.
 + Added NEC 78K0R port and demo.
 + Added MCF52259 port and demo.
 + Added the AT91SAM9XE port and demo.
 + Updated the MCF52233 FEC driver to work around a silicon bug that
  prevents the part auto negotiating some network parameters.
 + Minor modifications to the MCF52233 makefile to permit it to be used
  on Linux hosts.
 + Updated the STM32 primer files to allow them to be built with the latest
  version of the RIDE tools.
 + Updated the threads.js Java script used for kernel aware debugging in
  the Rowley CrossWorks IDE.
klen
Всем привет
Новый релиз FreeRTOS

пазитифф!
HARMHARM
Changes between V5.1.2 and V5.2.0 released March 14th 2009

+ Optimised the queue send and receive functions (also used by semaphores).
+ Replaced the standard critical sections used to protect BIOS calls in the
PC port to instead use scheduler locks. This is because the BIOS calls
always return with interrupts enabled.
+ Corrected unclosed comments in boot.s.

От себя - оптимизация заключается в уменьшении количества критических секций при отправке/получении сообщений в очереди (и семаформах).
zhz
Changes between V5.2.0 and V5.3.0 released June 1st 2009

Main changes:

+ Added new (optional) feature that gathers statistics on the amount of CPU
time used by each task.
+ Added a new demo application for the Atmel AT91SAM3U Cortex-M3 based
microcontroller.
+ Added a new demo application for the NXP LPC1766 Cortex-M3 based
microcontroller.
+ Added a contributed port/demo that allows FreeRTOS to be 'simulated' in a
Linux environment.

Minor changes:
+ Updated the Stellaris uIP WEB server demos to include the new run time
statistics gathering feature - and include a served WEB page that
presents the information in a tabular format.
+ Added in the lwIP port layer for the Coldfire MCF52259.
+ Updated the CrossWorks LPC2368 WEB server to include an image in the
served content.
+ Changed some of the timing in the initialisation of the LPC2368 MAC to
permit its use on all part revisions.
+ Minor modifications to the core uIP code to remove some compiler warnings.
+ Added xTaskGetApplicationTaskTag() function and updated the OpenWatcom
demo to make use of the new function.
+ Added contributed demos for AVR32 AP7000, STM32 Primer 2 and STM32 using
Rowley Crossworks.
+ Heap_1.c and Heap_2.c used to define structures for the purpose of data
alignment. These have been converted to unions to save a few bytes of
RAM that would otherwise be wasted.
+ Remove the call to strncpy() used to copy the task name into the TCB when
the maximum task name is configured to be 1 byte long.
zltigo
Цитата(zhz @ Jun 2 2009, 11:33) *
+ Heap_1.c and Heap_2.c used to define structures for the purpose of data
alignment. These have been converted to unions to save a few bytes of
RAM that would otherwise be wasted.

.... правда при этом в системе продолжают ипользоваться по два MCB для
задач и очередей
Цитата
+ Remove the call to strncpy() used to copy the task name into the TCB when
the maximum task name is configured to be 1 byte long.

При этом имена длинна которых превышает размер указателя продолжают бессмысленно хранится в TCB..
zltigo
Changes between V5.3.0 and V5.3.1 released June 21st 2009

+ Added ColdFire V1 MCF51CN128 port and WEB server demo.
+ Added STM32 Connectivity Line STM32107 Cortex M3 WEB server demo.
+ Changed the Cortex M3 port.c asm statements to __asm so it can be
compiled using Rowley CrossWorks V2 in its default configuration.
+ Updated the Posix/Linux simulator contributed port.
zltigo
Changes between V5.3.1 and V5.4.0 released July 13th 2009

+ Added Virtex5 / PPC440 port and demos.
+ Replaced the LPC1766 Red Suite demo with an LPC1768 Red Suite demo. The
original demo was configured to use engineering samples of the CPU. The
new demo has an improved Ethernet driver.
+ Added LPC1768 Rowley demo with zero copy Ethernet driver.
+ Reworked byte alignment code to ensure 8 byte alignment works correctly.
ну наконец-то^^^ официально "заметили" тщательно игнорирумый баг.

+ Set configUSE_16_BIT_TICKS to 0 in the PPC405 demo projects.
+ Changed the initial stack setup for the PPC405 to ensure the small data
area pointers are setup correctly.
aaarrr
Цитата(zltigo @ Jul 17 2009, 16:34) *
+ Reworked byte alignment code to ensure 8 byte alignment works correctly.
ну наконец-то^^^ официально "заметили" тщательно игнорирумый баг.

Да, не надеялся уже, что это когда-нибудь случится.
head_sk
Кстати многие обвиняют freeRTOS в плохой документации. Недавно поднимал её с нуля, а сейчас уже коммерческий проек на ней делаю, так что эдело наверное больше в нежелании икать и читать...
zltigo
Changes between V5.4.0 and V5.4.1 released July 25th 2009

+ New hook function added. vApplicationMallocFailedHook() is (optionally)
called if pvPortMalloc() returns NULL.
+ Additional casting added to xTaskCheckForTimeOut(). This prevents
problems that can arise should configUSE_16_BIT_TICKS be set to 1 on a
32 bit architecture (which would probably be a mistake, anyway).
+ Corrected the parameter passed to NVIC_SetPriority() to set the MAC
interrupt priority in both LPC1768 demos.
+ Decreased the default setting of configMINIMAL_STACK_SIZE in the PIC32
demo application to ensure the heap space was not completely consumed
before the scheduler was started.
head_sk
Ни у кого нет плагина для freeRTOS для IAR версии 4.42A?
Попробовал скачать от сюда подошло только для IAR 5 и выше. Не охота переносить проект, может у кого завалялся плагин для версии 4.42A?
MALLOY2
Цитата(head_sk @ Jul 31 2009, 15:21) *
Ни у кого нет плагина для freeRTOS для IAR версии 4.42A?
Попробовал скачать от сюда подошло только для IAR 5 и выше. Не охота переносить проект, может у кого завалялся плагин для версии 4.42A?


А он разве был для ранних версий ? по моему они его сразу для 5х сделали.
zltigo
Changes between V5.4.1 and V5.4.2 released August 9th 2009

+ Added a new port and demo app for the Altera Nios2 soft core.
+ Added LPC1768 demo for IAR.
+ Added a USB CDC demo to all LPC1768 demos (Code Red, CrossWorks and IAR).
+ Changed clock frequency of LPC1768 demos to 99MHz.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.