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

 
 
> Кто-нибудь по шагам по 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
Ответов
HARMHARM
сообщение Sep 17 2007, 10:17
Сообщение #2


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Уважаемый xelax, удались ли вам решить проблему? Имею те же симптомы - возникает prefetch abort в portRESTORE_CONTEXT, правда контроллер LPC2368.
Go to the top of the page
 
+Quote Post
Andrey Vasilyev
сообщение Mar 8 2009, 00:10
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 5-12-08
Из: Санкт-Петербург
Пользователь №: 42 220



Цитата(HARMHARM @ Sep 17 2007, 13:17) *
Уважаемый xelax, удались ли вам решить проблему? Имею те же симптомы - возникает prefetch abort в portRESTORE_CONTEXT, правда контроллер LPC2368.


Я тоже напоролся на PAbort в последней инструкции макроса portRESTORE_CONTEXT(), выглядящей как SUBS PC, LR, #4

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

В моем случае все дело было в том, что я в startup.S после инициализации стеков для всех режимов оставлял процессор в режиме System, а надо было оставлять в Supervisor.
Из-за этого инструкция LDMFD LR, {R0-R14}^ замещала не ту копию R13 (SP) и R14 (LR), и поэтому последующая команда LDR LR, [LR, #+60] работала с испорченным содержимым LR, и разумеется, переходила по "мусорному" адресу.
Go to the top of the page
 
+Quote Post



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

 


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


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