|
uCOS-II LPC 2124 port, Порт для 2124 (из 2129) |
|
|
|
Dec 29 2004, 11:12
|
Участник

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

|
Я пытаюсь портировать микроКОС (AN-1229, Keil MCB2100 ) на 2124 (Olimex е2124), но у меня пока как неполучается. Пробывал под ИАР 4.11, после инициализации платы зависает на IdleTask (нет переключения задач). Под 3.21 пока не удалось скомпилировать. Разумная идея или/и ценный опыт приветсвувуются
|
|
|
|
|
Dec 30 2004, 06:34
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 22-06-04
Из: Челябинск
Пользователь №: 88

|
Цитата(emerg_reanimator @ Dec 29 2004, 14:12) Я пытаюсь портировать микроКОС (AN-1229, Keil MCB2100 ) на 2124 (Olimex е2124), но у меня пока как неполучается. Пробывал под ИАР 4.11, после инициализации платы зависает на IdleTask (нет переключения задач). Под 3.21 пока не удалось скомпилировать. Разумная идея или/и ценный опыт приветсвувуются  в ИАР 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=
|
|
|
|
|
Dec 30 2004, 11:07
|
Участник

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

|
Спасибо за полезные ответы! На счёт пропуска тика очень похоже, но непонятно. Почему он пропускается? Таймер и прерывания настройны правильно. На сколько я знаю микроКОС переходит в System режим при инициализации. В моём случае так есть, проверял все пять битиков установлены. Но можно ещё раз проверить. Было бы интересно если можно было бы при симуляции отлавливать изменения ножек порта. На подобии uVision Debug functions в Keil'e.
|
|
|
|
|
Jan 9 2005, 12:19
|
Участник

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

|
Вопрос относится больше к самой процедуре компиляции, чем к ОС. При компиляции проекта с использованием cstartup.s79 (для IAR). В функции ?cstartup вызвается функция __segment_init() в которой копируются сегменты кода (initTable). Непонятно в каком случае нужно копировать и собственно говоря зачем? Объясните пожалуйста!
|
|
|
|
|
Jan 10 2005, 12:37
|
Участник

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

|
Ясно, спасибо!
Я понял почему у меня ОС не заработала (надо было вначале доки читать :P ). В ИАРе нет поддержки симуляции перефирии (а вот в Кейле есть). Таймер не тикает. Для этих целей прелагается использовать генератор прерываний. Но это далеко не всегда удобно.
К сожалению у меня пока нет адаптера Wiggler поэтому приходится пользовать симулятор.
|
|
|
|
|
Jan 14 2005, 18:14
|
Участник

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

|
Спасибо за оперативные ответы! Схему адаптера я уже скачал и сделал ПП для него. Просто сейчас плата изготавливается и пока приходится пользоваться подручными средствами. Я использую ИАР 3.21а (кстати установленный 4.11а распознаётся утилиткой в систрэйе как 4.10b) и надеюсь, что проблем особых с адаптером не будет. Я сейчас пользуюсь Кейл-овским микровижэн+ГНУ. Пример для настройки таймера работает без проблем. А вот с родным бета-компилятором не хочет: после выхода из процедуры прерывания не сбрасываеться I-флаг. Пока мне не удалось запустить ОС на 2124. Проблема остаётся в таймере. Я даже без ОС не могу его оживить. Это касается ИАР. Ещё раз повторюсь под Кейл таймер заработал. Различия между примерами для ИАР и для Кейл заключаютя в начальной инициализации процессора, но какие настройки влияют на работу таймера пока сообразить не могу. Если кому-нибудь нечего будет делать на досуге, взгляните плз См. приложение
Сообщение отредактировал emerg_reanimator - Jan 15 2005, 09:25
|
|
|
|
|
Jan 14 2005, 18:16
|
Участник

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

|
Цитата(jojo @ Jan 14 2005, 10:17) На всякий случай прикрепляю файл с ИАР ROM Monitor для ARM. Он пропатчен и работает на скорости 115200 вместо оригинальных 9600. Для начала работы с LPC210x вполне сгодится, и Виглер не нужен. Примеры использования есть в IAR 4. Разумеется, надо правильно сконфигурировать проект, иначе работать не будет  Спасибо, как будет свободное время обязатльено посмотрю.
|
|
|
|
|
Jan 15 2005, 06:53
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 22-06-04
Из: Челябинск
Пользователь №: 88

|
В иаре в симуляторе для таймера можно использвать макрос, который будет генерить прерывания. Только переименуйте его в irq.mac (он у меня так не прикрепился, я ему расщирение на zip Поменял) В меню debugger->Setup macros галку на use macro, и вставьте файл irq.mac
Прикрепленные файлы
irq.zip ( 70 байт )
Кол-во скачиваний: 57
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|