int0x25 0 21 апреля, 2010 Опубликовано 21 апреля, 2010 · Жалоба Здравствуйте. МК = AT91SAM7x256. Столкнулся с проблемой - для FreeRTOS создал задачу с использованием uip (из стандартновго примера "EasyWEB" в папке Keil). Эта задача работает нормально, а вот другие перестали вообще работать(видимо на них не переключается система). От чего это может быть и как бороться? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
int0x25 0 21 апреля, 2010 Опубликовано 21 апреля, 2010 · Жалоба Нашел от чего это происходит в этой функции. 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 уже используется этот таймер для переключения задач и я просто затирал старый обработчик прерываний. А вот теперь я хочу код из своего обработчика сунуть в тот, который затирал, но он находится в ассемблерном файле. Отсюда вопрос - можно ли в ассемблерный файл экспортировать глобальные переменные из си файла? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 21 апреля, 2010 Опубликовано 21 апреля, 2010 · Жалоба Нашел от чего это происходит в этой функции. Одного взгляда на эту функцию достаточно, чтобы сделать нелицеприятное заключение о способностях ее автора: работать по фронту с прерыванием SYS, мягко говоря, чревато последствиями. Отсюда вопрос - можно ли в ассемблерный файл экспортировать глобальные переменные из си файла? Для этого существует директива IMPORT. Но если хотите сделать не через известное место, воспользуйтесь vApplicationTickHook. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться