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

 
 
> Обучение FreeRTOS, Разбирается статья Курниц
EmDMAl
сообщение May 13 2012, 17:24
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 13-05-12
Пользователь №: 71 815



Здравствуйте. Выбрал FreeRTOS для программирования МК AVR(в основном Atmega8,16,32..). В качестве рабочей среды использую AVR Studio 4.19 + AVR-TOOLCHAIN-3.3.0.710, а для обучения взял "FreeRTOS — операционная система для микроконтроллеров" Андрея Курница. И у меня естнственно возникают вопросы.
1. В первом примере (мигание 2мя светодиодами) используется задержка в задачах следующего типа:
Код
for( ul = 0; ul < 4000L; ul++ ) {}
. Но с этой формой задержки у меня работает только одна задача, та которая первая вызывается в главном теле (
Код
short main( void ) {....}
). Если использую одну из ф-ий задержек/сна vTaskDelay("Тик"), то работают обе ф-ии на ура. Так вот вообще такая запись как у Курница допускается или автор ее привел просто для понятия, но она никогда не будет работать? Ниже привожу код main.c и FreeRTOSConfig.h.
2. При компиляции этого кода у меня получился hex размером 11кб, на мой взгляд много. Делал все строго по инструкции автора, удалил все ненужное. Автор пишет, что размер ядра составляет 4-9кб, но это пик при использовании всех ф-ии. Так вот, почему же у меня при использовании 2х простых задач получилось уже 11кб? Можно ли как-нибудь программно отключить ненужные файлы.
3. Рассматривать FreeRTOS стал из-за ее популяризации(довольно много находил статей по ней). Может более опытные подскажут какая ОС более оптимальна в соотношении размера hex файла, возможностей и доступности документации?
Пишу сюда, потому, что в инете это единственное место на мой взгляд где можно получить ответы по FreeRTOS. Помгоите разобраться. С уважением Дмитрий.
main.c
Код
#include "FreeRTOS.h"
#include "task.h"

void vTask1( void *pvParameters )
{
  volatile unsigned long ul;
  for(;; )
  {
    PORTC ^= (1 << PC0);
    for( ul = 0; ul < 4000L; ul++ )
   {
   }
  }
  vTaskDelete( NULL );
}
void vTask2( void *pvParameters )
{
  volatile unsigned long ul;
  for(;; )
  {
    PORTC ^= (1 << PC1);
    for( ul = 0; ul < 8000L; ul++ )
   {
   }
  }
  vTaskDelete( NULL );
}
/*-----------------------------------------------------------*/
int main( void )
{
  DDRC |= (1 << DDC0) | (1 << DDC1);
  xTaskCreate( vTask1,  (signed char *) "Task1",  configMINIMAL_STACK_SIZE,   NULL,  1,   NULL );
  xTaskCreate( vTask2,  (signed char *) "Task2",  configMINIMAL_STACK_SIZE,  NULL, 1,   NULL );
  vTaskStartScheduler();
  return 0;
}

FreeRTOSConfig.h
Код
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H

#include <avr/io.h>

#define configUSE_PREEMPTION        1
#define configUSE_IDLE_HOOK        0//Отключаю vApplicationIdleHook()
#define configUSE_TICK_HOOK        0
#define configCPU_CLOCK_HZ        ( ( unsigned long ) 8000000 )
#define configTICK_RATE_HZ        ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES        ( ( unsigned portBASE_TYPE ) 4 )
#define configMINIMAL_STACK_SIZE    ( ( unsigned short ) 85 )
#define configTOTAL_HEAP_SIZE        ( (size_t ) ( 1500 ) )
#define configMAX_TASK_NAME_LEN    ( 8 )
#define configUSE_TRACE_FACILITY    0
#define configUSE_16_BIT_TICKS    1
#define configIDLE_SHOULD_YIELD    1
#define configQUEUE_REGISTRY_SIZE     0
/* Co-routine definitions. */
#define configUSE_CO_ROUTINES         1
#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )

/* Set the following definitions to 1 to include the API function, or zero
to exclude the API function. */

#define INCLUDE_vTaskPrioritySet        0
#define INCLUDE_uxTaskPriorityGet        0
#define INCLUDE_vTaskDelete            1
#define INCLUDE_vTaskCleanUpResources    0
#define INCLUDE_vTaskSuspend            0
#define INCLUDE_vTaskDelayUntil        1
#define INCLUDE_vTaskDelay            1


#endif /* FREERTOS_CONFIG_H */
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- EmDMAl   Обучение FreeRTOS   May 13 2012, 17:24
- - iosifk   Цитата(EmDMAl @ May 13 2012, 21:24) ..., ...   May 13 2012, 17:48
- - Cosmojam   Цитата(EmDMAl @ May 13 2012, 20:24) 2. Пр...   May 13 2012, 19:08
- - Volldemar   Или применять утилиту hex2bin.exe для преобразован...   May 14 2012, 04:49
|- - Terminator   Цитата(Volldemar @ May 14 2012, 11:49) Ил...   May 14 2012, 09:29
- - juvf   1. две задачи с равным приоритетом при вытесняющей...   May 15 2012, 02:48
- - EmDMAl   1. Оказывется в Proteus 7.7. sp3 этот код работае...   May 15 2012, 05:03
|- - juvf   Цитата(EmDMAl @ May 15 2012, 11:03) uOS -...   May 15 2012, 05:43
- - EmDMAl   Цитата(EmDMAl @ May 15 2012, 09:03) Напис...   May 15 2012, 18:09
- - Volldemar   У меня вот такой main работал без проблем: Код#inc...   May 17 2012, 07:29
- - EmDMAl   1. Кто-нибудь, устанавливал компилятор Open Watcom...   May 17 2012, 07:40
|- - EmDMAl   Цитата(EmDMAl @ May 17 2012, 11:40) 1. Кт...   May 17 2012, 08:35
- - Volldemar   Я компиляю в эклипсе+winavr   May 17 2012, 07:48
- - EmDMAl   При повторной установки новой версии ошибки с поис...   May 20 2012, 12:36
- - juvf   непонятно почему компилятор ищет vTaskStartTrace_,...   May 22 2012, 02:19
|- - ATMExpert   А кто может подсказать, чем FreeRTOS генерирует эт...   May 26 2012, 21:13
|- - _Артём_   Цитата(ATMExpert @ May 27 2012, 00:13) А ...   May 26 2012, 21:51
||- - ATMExpert   Цитата(_Артём_ @ May 27 2012, 01:51) Доба...   May 27 2012, 07:04
||- - MrYuran   xx Написал, не подумав, поскипал.   Dec 11 2012, 08:47
||- - wellcom   Цитата(MrYuran @ Dec 11 2012, 12:47) xx ...   Dec 11 2012, 10:13
|- - Volldemar   Цитата(ATMExpert @ May 27 2012, 00:13) А ...   May 27 2012, 07:06
|- - ATMExpert   Цитата(Volldemar @ May 27 2012, 11:06) Fr...   May 27 2012, 07:25
||- - _Артём_   Цитата(ATMExpert @ May 27 2012, 10:25) А ...   May 27 2012, 07:32
||- - ATMExpert   Цитата(_Артём_ @ May 27 2012, 11:32) Тогд...   May 27 2012, 07:41
|- - juvf   Цитата(Volldemar @ May 27 2012, 13:06) Fr...   May 28 2012, 02:42
- - wellcom   Привет знатокам! Начал разбираться с FreeRTOS ...   Dec 11 2012, 08:45
- - wellcom   Разобрался, дело было в ключевом слове "stati...   Dec 17 2012, 11:15
- - wellcom   Подскажите, как записать в такую очередь данные???...   Dec 24 2012, 13:21
- - Cosmojam   Как любые другие данные по указателю КодxQueueSend...   Dec 24 2012, 18:50
- - wellcom   ...перед этим нужно заполнить структуру данными чт...   Dec 25 2012, 10:57


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

 


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


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