emerg_reanimator 0 29 декабря, 2004 Опубликовано 29 декабря, 2004 · Жалоба Я пытаюсь портировать микроКОС (AN-1229, Keil MCB2100 ) на 2124 (Olimex е2124), но у меня пока как неполучается. Пробывал под ИАР 4.11, после инициализации платы зависает на IdleTask (нет переключения задач). Под 3.21 пока не удалось скомпилировать. Разумная идея или/и ценный опыт приветсвувуются :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 29 декабря, 2004 Опубликовано 29 декабря, 2004 · Жалоба Пробывал под ИАР 4.11, после инициализации платы зависает на IdleTask (нет переключения задач). Под 3.21 пока не удалось скомпилировать. <{POST_SNAPBACK}> Обратите внимание на конфигурирование и инициализацию системного таймера, особенно прерывания от его. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lamerok 0 30 декабря, 2004 Опубликовано 30 декабря, 2004 · Жалоба Я пытаюсь портировать микроКОС (AN-1229, Keil MCB2100 ) на 2124 (Olimex е2124), но у меня пока как неполучается. Пробывал под ИАР 4.11, после инициализации платы зависает на IdleTask (нет переключения задач). Под 3.21 пока не удалось скомпилировать. Разумная идея или/и ценный опыт приветсвувуются :) <{POST_SNAPBACK}> в ИАР 4.11 Если вы делаете пошаговую отладку, то так и будет, так как таймер то тикает, а вы стоите.. и системный тик пропускается, поэтому нужно поставить брейкпоинт сразу на какой-нибудь задаче, только после этого брейкпоинта опять будет сбой тиков.. и опять только идле будет работать, кроме того, необходимо перевести в режим SYS, например не мудрствуя лукаво в файле KikstartCard_cstartup.s79. mrs r0,cpsr ; Original PSR value bic r0,r0,#MODE_BITS ; Clear the mode bits orr r0,r0,#IRQ_MODE ; Set IRQ mode bits msr cpsr_c,r0 ; Change the mode ldr sp,=SFE(IRQ_STACK) & 0xFFFFFFF8 ; End of IRQ_STACK bic r0,r0,#MODE_BITS ; Clear the mode bits orr r0,r0,#SVC_MODE ; Set System mode bits msr cpsr_c,r0 ; Change the mode ldr sp,=SFE(CSTACK) & 0xFFFFFFF8 ; End of CSTACK поэтому смотреть работу задачи лучше на портах, например сделать задачку которая преключает портик и смотреть он переключается или нет... Вот ссылочка на тему.. там пример есть http://forum.electronix.ru/index.php?showtopic=1179&hl= Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
emerg_reanimator 0 30 декабря, 2004 Опубликовано 30 декабря, 2004 · Жалоба Спасибо за полезные ответы! На счёт пропуска тика очень похоже, но непонятно. Почему он пропускается? Таймер и прерывания настройны правильно. На сколько я знаю микроКОС переходит в System режим при инициализации. В моём случае так есть, проверял все пять битиков установлены. Но можно ещё раз проверить. :) Было бы интересно если можно было бы при симуляции отлавливать изменения ножек порта. На подобии uVision Debug functions в Keil'e. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
emerg_reanimator 0 9 января, 2005 Опубликовано 9 января, 2005 · Жалоба Вопрос относится больше к самой процедуре компиляции, чем к ОС. При компиляции проекта с использованием cstartup.s79 (для IAR). В функции ?cstartup вызвается функция __segment_init() в которой копируются сегменты кода (initTable). Непонятно в каком случае нужно копировать и собственно говоря зачем? Объясните пожалуйста! :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 9 января, 2005 Опубликовано 9 января, 2005 · Жалоба Непонятно в каком случае нужно копировать и собственно говоря зачем? <{POST_SNAPBACK}> Если Вы в своей программе обявляли переменные и присваивали им начальные значения, то эти начальные значения (инициализаторы) хранятся в ПЗУ и при старте программы копируются в инициализируемые переменные. Т. е., в Вашем случае происходит копирование сегмента DATA_ID (ПЗУ) в сегмент DATA_I (ОЗУ). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
emerg_reanimator 0 10 января, 2005 Опубликовано 10 января, 2005 · Жалоба Ясно, спасибо! Я понял почему у меня ОС не заработала (надо было вначале доки читать :P ). В ИАРе нет поддержки симуляции перефирии (а вот в Кейле есть). Таймер не тикает. Для этих целей прелагается использовать генератор прерываний. Но это далеко не всегда удобно. К сожалению у меня пока нет адаптера Wiggler поэтому приходится пользовать симулятор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_man_show 0 10 января, 2005 Опубликовано 10 января, 2005 · Жалоба К сожалению у меня пока нет адаптера Wiggler поэтому приходится пользовать симулятор. <{POST_SNAPBACK}> Повторю слова коллег, почитайте форум, найдете советы, как быстро и легко сделать Wiggler-совместимый адаптер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 11 января, 2005 Опубликовано 11 января, 2005 · Жалоба К сожалению у меня пока нет адаптера Wiggler поэтому приходится пользовать симулятор. <{POST_SNAPBACK}> Повторю слова коллег, почитайте форум, найдете советы, как быстро и легко сделать Wiggler-совместимый адаптер. <{POST_SNAPBACK}> А ещё за схемой Wiggler можно сходить на Сахару Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_man_show 0 13 января, 2005 Опубликовано 13 января, 2005 · Жалоба А мне не удалось нормально использовать сочетание Олимекс+Вигглер+ИАР. Поэтому, не меняя железо, пришлось перейти на КроссВоркс, работает без проблем. Вообще замечено, что Олимекс лучше живет с КроссВорксом. Если не ошибаюсь, то эта среда единственная, которая содержит примеры и "знает" что-то про Олимекс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jojo 0 14 января, 2005 Опубликовано 14 января, 2005 · Жалоба На всякий случай прикрепляю файл с ИАР ROM Monitor для ARM. Он пропатчен и работает на скорости 115200 вместо оригинальных 9600. Для начала работы с LPC210x вполне сгодится, и Виглер не нужен. Примеры использования есть в IAR 4. Разумеется, надо правильно сконфигурировать проект, иначе работать не будет :smile3046: 115200_LPC210xRomMon.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
emerg_reanimator 0 14 января, 2005 Опубликовано 14 января, 2005 (изменено) · Жалоба Спасибо за оперативные ответы! Схему адаптера я уже скачал и сделал ПП для него. Просто сейчас плата изготавливается и пока приходится пользоваться подручными средствами. Я использую ИАР 3.21а (кстати установленный 4.11а распознаётся утилиткой в систрэйе как 4.10b) и надеюсь, что проблем особых с адаптером не будет. Я сейчас пользуюсь Кейл-овским микровижэн+ГНУ. Пример для настройки таймера работает без проблем. А вот с родным бета-компилятором не хочет: после выхода из процедуры прерывания не сбрасываеться I-флаг. Пока мне не удалось запустить ОС на 2124. Проблема остаётся в таймере. Я даже без ОС не могу его оживить. Это касается ИАР. Ещё раз повторюсь под Кейл таймер заработал. Различия между примерами для ИАР и для Кейл заключаютя в начальной инициализации процессора, но какие настройки влияют на работу таймера пока сообразить не могу. Если кому-нибудь нечего будет делать на досуге, взгляните плз :) См. приложение src.iar321a.zip src.keil.zip Изменено 15 января, 2005 пользователем emerg_reanimator Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
emerg_reanimator 0 14 января, 2005 Опубликовано 14 января, 2005 · Жалоба На всякий случай прикрепляю файл с ИАР ROM Monitor для ARM. Он пропатчен и работает на скорости 115200 вместо оригинальных 9600. Для начала работы с LPC210x вполне сгодится, и Виглер не нужен. Примеры использования есть в IAR 4. Разумеется, надо правильно сконфигурировать проект, иначе работать не будет :smile3046: <{POST_SNAPBACK}> Спасибо, как будет свободное время обязатльено посмотрю. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 14 января, 2005 Опубликовано 14 января, 2005 · Жалоба emerg_reanimator Вместо вставки такого длинного кода лучше, пожалуйста, прикрепляйте файл к сообщению. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lamerok 0 15 января, 2005 Опубликовано 15 января, 2005 · Жалоба В иаре в симуляторе для таймера можно использвать макрос, который будет генерить прерывания. Только переименуйте его в irq.mac (он у меня так не прикрепился, я ему расщирение на zip Поменял) В меню debugger->Setup macros галку на use macro, и вставьте файл irq.mac irq.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться