Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Пытаюсь запустить FreeRTOS v8.0 из под IAR для миландровского МК на Cortex-M3 1986ВЕ91
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > FreeRTOS
Aroh
Помогите разобраться. Хочу использовать FreeRTOS под IAR. Пытаюсь заставить работать простой пример, где две задачи мигают светодиодами, но задачи не запускаются. Программа зависает и выводится сообщение:
The stack pointer for stack 'CSTACK' (currently 0x20007FC0) is outside the stack range (0x20001518 to 0x20003D18).

Это происходит в функции
Код
vPortStartFirstTask

при выполнении команды
Код
msr msp, r0

(файл portasm.c строка 147).

Добавил в файл FreeRTOSConfig.h
Код
#define vPortSVCHandler    SVC_Handler
#define xPortPendSVHandler    PendSV_Handler
#define xPortSysTickHandler SysTick_Handler

как советуют на миландровском форуме http://forum.milandr.ru/viewtopic.php?f=33&t=1394#p6201
megajohn
все CM3 одинаковы
попробуйте за основу взять
FreeRTOSv8.0.1\FreeRTOS\Demo\CORTEX_LPC1768_IAR\RTOSDemo.eww
den_po
попробуйте добавить в конец функции SystemInit строчки:

Код
#pragma section=".intvec"
  /* Configure the Vector Table location add offset address ------------------*/
  SCB->VTOR = (uint32_t)__section_begin(".intvec");
Aroh
den_po, спасибо большое - помогло.
ДЕЙЛ
у меня тоже что-то не так. Где искать ошибку? Весь код на скрине уместился.
den_po
Посмотрите, как в примерах сделано. В проект включается куча .c файлов от FreeRTOS.
И раз уж у вас сходу такие проблемы, на первых порах лучше отказаться от c++ в пользу c, ибо там добавится ещё вопросов.
ДЕЙЛ
Цитата(den_po @ Jun 10 2014, 23:45) *
Посмотрите, как в примерах сделано. В проект включается куча .c файлов от FreeRTOS.
И раз уж у вас сходу такие проблемы, на первых порах лучше отказаться от c++ в пользу c, ибо там добавится ещё вопросов.

вот от примера

#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"


/* Demo app includes. */
#include "BlockQ.h"
#include "integer.h"
#include "blocktim.h"
#include "flash.h"
#include "partest.h"
#include "semtest.h"
#include "PollQ.h"
#include "GenQTest.h"
#include "QPeek.h"
#include "recmutex.h"

#include "includes.h"
#include <stdio.h>
#include <system_LPC177x_8x.h>
#include <lpc177x_8x_uart.h>

те, которые после /* Demo app includes. */ мне пока не нужны
megajohn
Цитата(ДЕЙЛ @ Jun 11 2014, 13:04) *
вот от примера


вам же правильно пишут, что надо *.C включить в проект IAR а не про *.h
Нажмите для просмотра прикрепленного файла

да и готовый проект я давал.

hands.vxd
ДЕЙЛ
Цитата(megajohn @ Jun 11 2014, 13:12) *
вам же правильно пишут, что надо *.C включить в проект IAR а не про *.h
Нажмите для просмотра прикрепленного файла

да и готовый проект я давал.

hands.vxd

готовый прект тоже чёт матерился, maniac.gif поэтому решил с простейшего начать, а то в дебри залез бы. Какие именно *.C файлы включать надо и куда нажимать для их добавления?


вечером попробую почистить тот проект до минимума smile3046.gif

картинка не сразу открылась
megajohn
Цитата(ДЕЙЛ @ Jun 11 2014, 13:21) *
готовый прект тоже чёт матерился

попробуйте для начала сами понять что он матерится, или тут выложить что выдает

Цитата(ДЕЙЛ @ Jun 11 2014, 13:21) *
Какие именно *.C файлы включать надо

какие файлы - указано на скриншоте. И в том проекте

Цитата(ДЕЙЛ @ Jun 11 2014, 13:21) *
куда нажимать для их добавления?

ну попробуйте чтоли вызвать контексное меню правой кнопкой =)
ДЕЙЛ
Цитата(megajohn @ Jun 11 2014, 13:42) *
ну попробуйте чтоли вызвать контексное меню правой кнопкой =)

аа, попробую smile3046.gif
ДЕЙЛ
Цитата(megajohn @ May 29 2014, 15:52) *
все CM3 одинаковы
попробуйте за основу взять
FreeRTOSv8.0.1\FreeRTOS\Demo\CORTEX_LPC1768_IAR\RTOSDemo.eww

ничего не менял, но при компилировании 27 ошибок и одно предупреждение wacko.gif
ДЕЙЛ
вернулся к копанию в FreeRTOS
Пытаюсь собрать проект по самому минимум, пока показал 8 предупреждений, но они поправимы - тактирование можно вручную настроить. Совсем непонятно, на какие переменные "TIM0" ругается компилятор? Её нет ни в одном файле проекта, искал поиском по словам.
den_po
что мешает ткнуть два раза в сообщение об ошибке, а затем поглядеть на определение того, что вызывает ошибку?
ДЕЙЛ
Цитата(den_po @ Aug 19 2014, 09:39) *
что мешает ткнуть два раза в сообщение об ошибке, а затем поглядеть на определение того, что вызывает ошибку?

Он показывает на строку с какой-то функцией, в которой этой переменной нет. Скрин сделать не могу, т.к. на рабочем компе IAR залез в тырнет, сломался и какую-то лицензию требует. Если не сложно, то попробуйте откомпилировать и ткнуть.
ДЕЙЛ
Ткнулся в переменную, дошёл в итоге до кода в файле FreeRTOSconfig
Код
#ifdef __ICCARM__
    #include "LPC17xx.h"
    extern void vConfigureTimerForRunTimeStats( void );
    #define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vConfigureTimerForRunTimeStats()
    #define portGET_RUN_TIME_COUNTER_VALUE()[b] TIM0[/b]->TC
#endif

Что с ней дальше делать? В файле "LPC17xx.h" есть переменные LPC_TIM0 и LPC_TIM0_BASE, при замене которых вместо TIM0 выскакивают другие ошибки
ДЕЙЛ
урезал текст файла main.c демо-проекта до минимума, затем этот текст вставил в чистый проект и стал добавлять файлы из папки пока компилятор не перестал материться. Вроде пока ошибок нет, но почему-то получилось пара десятков файлов вместо заявленных нескольких? И в отладчике почемуто ни в одну задачу не входит. Что нужно изменить, чтобы программа входила в задачи поочерёдно? Приоритет подправил, заменив на одинаковые.
ДЕЙЛ
в предыдущей урезке отладчик зависал в немаскируемом прерывании. В сегодняшней версии почему-то только именно в последней задаче висит. До железа пока руки не доходят. Интересно узнать, много здесь знающих спецов по FreeRTOS бывает? А то сам с собой тут разговариваю rolleyes.gif
ДЕЙЛ
Имеется код вот отсюда http://microsin.ru/content/view/1304/44/
Код
     int main( void )
    {
    
      xTaskCreate( vTask1, "Task 1", 1000, NULL, 1, NULL );  
      xTaskCreate( vTask2, "Task 2", 1000, NULL, 1, NULL );
      vTaskStartScheduler();
      for(;; );
    }

     void vTask1( void *pvParameters )
    {
      int i;
      for(;; )
      {
       i++;
      }
    }

void vTask2( void *pvParameters )
    {
      int j;
      for(;; )
      {
       j++;
      }
    }

как мне сделать так, чтобы он компилировался в IARе и работал в LPC1778? Хочется получить проект с минимальным набором файлов
ДЕЙЛ
Заработало yeah.gif Как только дошло до железа, так сразу всё на своих местах оказалось. Пустой проект по последней сылке работоспособен в железе. Давно уже меня так сильно не подводил эмулятор. Или какие-то тонкости отладки операционки в симуляторе имеются?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.