Перейти к содержанию
    

с uIp не работают другие задачи

Здравствуйте. МК = AT91SAM7x256. Столкнулся с проблемой - для FreeRTOS создал задачу с использованием uip (из стандартновго примера "EasyWEB" в папке Keil). Эта задача работает нормально, а вот другие перестали вообще работать(видимо на них не переключается система). От чего это может быть и как бороться?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел от чего это происходит в этой функции.

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 уже используется этот таймер для переключения задач и я просто затирал старый обработчик прерываний. А вот теперь я хочу код из своего обработчика сунуть в тот, который затирал, но он находится в ассемблерном файле. Отсюда вопрос - можно ли в ассемблерный файл экспортировать глобальные переменные из си файла?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел от чего это происходит в этой функции.

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

 

Отсюда вопрос - можно ли в ассемблерный файл экспортировать глобальные переменные из си файла?

Для этого существует директива IMPORT. Но если хотите сделать не через известное место, воспользуйтесь vApplicationTickHook.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...