Перейти к содержанию
    

Вышла FreeRTOS V4.0.5 ... 8.2.3

..код для оценки использования кучи FreeRTOS..

Менеджеры памяти первыми у меня пошли под нож. То, что в комплекте вообще не менежеры и "заглушки" - нет даже элементарно реализуемых вещей, вроде склейки свободных блоков в один, вообще списка занятых блоков, управления памятью в нескольких первичных блоках, захвата всей свободной памяти, ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Менеджеры памяти первыми у меня пошли под нож. То, что в комплекте вообще не менежеры и "заглушки" - нет даже элементарно реализуемых вещей, вроде склейки свободных блоков в один, вообще списка занятых блоков, управления памятью в нескольких первичных блоках, захвата всей свободной памяти, ...

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Потом понял что для моих задач менежмент памяти вообще не нужен.

Грамотный менеджмент памяти полезен всегда, даже если память динамически не освобождается. Банально посмотреть на кто сколько памяти скушал и, например, покопаться по очередям/буферам не имея листинга для этой конкретной сборки, контексты задач/стеки видны...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Официальная декларация фич появилась:

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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Версия обозванная 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это хорошо

за что я люблю FreeRTOS?

за то что она как пластилин - изогнуть мехом вов нутрь можно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

P.S.

Я, лично, использую операционные системы для экономии памяти, а не наоборот.

 

Поясните пожалуйста, как это ?

В чем экономия в отличии от системы без ОС ? :wacko:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поясните пожалуйста, как это ?

В чем экономия в отличии от системы без ОС ? :wacko:

Да, мне тоже интересно, где экономия памяти... Но одно можно сказать, время ОЧЕНЬ экономится - а это порой ещё важнее чем несчастные сэкономленные килобайты памяти...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, мне тоже интересно, где экономия памяти...

У меня экономия памяти на задачах которые в данный момент не работают (совсем не работают - не созданы) и задачах количество которых меняется в заисимости от конфигурации. Например, задача начальной инициализации отрабатывает и умирает навсегда. Задачи калибровок и самодиагностики работают (cуществуют) только тогда, когда не запущена задача консоли оператора,....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

с данной ОС совсем не знаком, но тут прочитал что у нее есть менеджер памяти, а кто нибудь может кратенько объяснить как он устроен ? я не представляю себе такой менеджер без поддержки MMU в процессоре. Ведь фрагментация возникать должна, а как с ней бороться ? если указатели уже розданы задачам.

PS: подумываю об использовании ОС.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

..а кто нибудь может кратенько объяснить как он устроен ?

Проще посмотреть исходник там несколько десятков строчек. Все минималистично до безобразия - надо использовать более сложный со склейкой освобожденных блоков и поиском более подходящих а не первого попавшегося. С дефрагментацией бороться только организационно - запрос блоков памяти фиксированных размеров, проход через освобождение нескольких последних выделенных блоков....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

по поводу фрагментации, у меня еще мысль возникла, если использовать не просто прямой указатель на блок памяти, а указатель на указатель. Тогда второй(системный) можно перемещать вместе с блоком памяти, а первый(пользовательский) изменятся не будет. Правда все это надо учесть при написании кода.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня экономия памяти на задачах которые в данный момент не работают (совсем не работают - не созданы) и задачах количество которых меняется в заисимости от конфигурации. Например, задача начальной инициализации отрабатывает и умирает навсегда. Задачи калибровок и самодиагностики работают (cуществуют) только тогда, когда не запущена задача консоли оператора,....

 

Тепрь понятно что имелось в виду, Выжимка из всего что есть....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...