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

 
 
> с uIp не работают другие задачи
int0x25
сообщение Apr 21 2010, 07:55
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 22-02-10
Из: St.P
Пользователь №: 55 614



Здравствуйте. МК = AT91SAM7x256. Столкнулся с проблемой - для FreeRTOS создал задачу с использованием uip (из стандартновго примера "EasyWEB" в папке Keil). Эта задача работает нормально, а вот другие перестали вообще работать(видимо на них не переключается система). От чего это может быть и как бороться?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
int0x25
сообщение Apr 21 2010, 21:42
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 22-02-10
Из: St.P
Пользователь №: 55 614



Нашел от чего это происходит в этой функции.
Код
void TCPLowLevelInit(void)
{
// Keil: Timer 0 is used for TCP retransmission control

  *AT91C_PITC_PIMR = AT91C_PITC_PITIEN | AT91C_PITC_PITEN |
                     784741;                     // 262mSec;

  *(AT91C_AIC_SVR + AT91C_ID_SYS) = (unsigned int)TCPClockHandler;
  *(AT91C_AIC_SMR + AT91C_ID_SYS) = AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE;
  *AT91C_AIC_IECR = (1 << AT91C_ID_SYS);
}
Оказывается во FreeRTOS уже используется этот таймер для переключения задач и я просто затирал старый обработчик прерываний. А вот теперь я хочу код из своего обработчика сунуть в тот, который затирал, но он находится в ассемблерном файле. Отсюда вопрос - можно ли в ассемблерный файл экспортировать глобальные переменные из си файла?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 21 2010, 21:55
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(int0x25 @ Apr 22 2010, 01:57) *
Нашел от чего это происходит в этой функции.

Одного взгляда на эту функцию достаточно, чтобы сделать нелицеприятное заключение о способностях ее автора: работать по фронту с прерыванием SYS, мягко говоря, чревато последствиями.

Цитата(int0x25 @ Apr 22 2010, 01:57) *
Отсюда вопрос - можно ли в ассемблерный файл экспортировать глобальные переменные из си файла?

Для этого существует директива IMPORT. Но если хотите сделать не через известное место, воспользуйтесь vApplicationTickHook.
Go to the top of the page
 
+Quote Post

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

 


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


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