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

 
 
> Кто-нибудь по шагам по FreeRTOS в IARе ходил
xelax
сообщение Apr 20 2007, 12:02
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



Пытаюсь сейчас переложить FreeRTOS на IAR 4.31 для LPC2214.
Натолкнулся на такую фишку в асм файле portasm.s79 в

vPortStartFirstTask:
portRESTORE_CONTEXT



При запуске тасков регистр SP выходит за пределы указанные в линкере. IAR начинает постоянно warning'и сыпать. Вопрос спецам, это вообще нормально? Причём готовый пример, который вместе с исходниками скачивается на LPC2129 вытворяет тоже самое в симуляторе.

Поскольку это мой первый опыт общения с РТОСами, на этом всё и за стряло. Запустить пока не получается. Программа пролетает создание и запуск тасков и начинает благополучно слать 55 через uart. Что не так делаю?


#include "system.h"
#include "uart.h"

/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"

// Task to be created.
void vTaskCode( void * pvParameters )
{
for( ;; )
{
// Task code goes here.
UART0WriteChar(0x77);
UART1WriteChar(0x77);
}
}

int main()
{
// PLL, MAM, Port's initialization
SystemInit ();
// UART initialization
InitUart0();
InitUart1();

// Create the task, storing the handle.
xTaskCreate( vTaskCode, "NAME", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
vTaskStartScheduler();
// loop forever
while(1) {
UART0WriteChar(0x55);
UART1WriteChar(0x55);
}

}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Apr 20 2007, 12:28
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(xelax @ Apr 20 2007, 11:02) *
portRESTORE_CONTEXT
Не знаю как в последних версиях, а раньше приходилось дописывать
Код
/* Constants required to setup the initial stack. */
#if __CPU_MODE__ == 1
#define portINITIAL_SPSR                ( ( portSTACK_TYPE ) 0x3f ) /* System mode, THUMB mode, interrupts enabled. */
#else
#define portINITIAL_SPSR                ( ( portSTACK_TYPE ) 0x1f ) /* System mode, ARM mode, interrupts enabled. */
#endif
Иначе если весь проект в ARM mode оно как раз с вашими симптомами и не работало.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
xelax
сообщение Apr 20 2007, 12:43
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



где дописывать этот код?
Go to the top of the page
 
+Quote Post



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

 


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


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