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

 
 
> Прерывания без ОС на EP9315, обработчик не вызывается
toykhee_menky
сообщение Jun 30 2008, 15:43
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 30-06-08
Пользователь №: 38 654



Здравствуйте.

EP9315 на плате Tion-pro v1.
Программа на Си, компилируется WinARM 4.1.1, грузится в RAM при помощи redboot.

Пытаюсь работать с портом UART2, порт, судя по всему, работает - тестовая последовательность туда уходит.

FIFO разрешено, после посылки восьми символов оттуда появляется битик прерывания в VIC1RawIntr, т.е. прерывание до VIC вроде бы доходит.

По адресу 0x18 содержится команда, оставленная там redboot-ом, судя по всему:
00000018: 18 F0 9F E5 - перевожу как ldr r15,[r15,#0x18], т.е. должен взяться адрес процедуры реакции на прерывание с адреса 0x38 (0x18+0x18+0x08).

Подменяю указатель по адресу 0x38 на адрес своей функции. Но управление она не получает (контроль - светодиодами).

Прерывания разрешены, режим супервизора: cpsr=0x00000013
ОЗУ отмаплено само на себя, с адреса 0.

обработчик прерывания IRQ оформлен как
Код
void  __attribute__ ((interrupt ("IRQ"))) handler1();

но управления тоже не получает (источник прерывания 25 для VIC1 выбрал, прерывания разрешил, адрес ISR занес).

Чего-то я еще не сделал... Чего?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
toykhee_menky
сообщение Jul 2 2008, 11:14
Сообщение #2





Группа: Новичок
Сообщений: 9
Регистрация: 30-06-08
Пользователь №: 38 654



Мда. Проблема, однако. Неужели я один такой (или первый?!)

Всё-таки мне кажется, что тут redboot руку приложил. Я его сам не собирал, взял готовый:
G:\Tion\tools\utils\util>md5sum redboot_322D.bin
1450b4be1f8a86b85cd2bf2326d8d906 redboot_322D.bin

при старте:
Код
+EP93xx - no EEPROM, static ESA, or RedBoot config option.
No network interfaces found

RedBoot(tm) bootstrap and debug environment [ROMRAM]
Non-certified release, version UNKNOWN - built 16:31:15, May 28 2007

Platform: Cirrus Logic EDB9312 Board (ARM920T) Rev A
Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
Copyright (C) 2003, 2004, 2005, 2006 eCosCentric Limited

RAM: 0x00000000-0x04000000, [0x00042e80-0x03fdd000] available
FLASH: 0x60000000 - 0x60800000, 64 blocks of 0x00020000 bytes each.
RedBoot>


Смотрел eCos и eCos-2.0, скачивал с ftp://ecos.sourceware.org/pub/ecos/releases, поскольку redboot является частью екоса.

Не вижу поддержки ep93xx в этих исходниках. Если бы была, то можно было бы найти информацию по прерываниям (например, здесь) и отмапливанию памяти.

Значит, какой-то добрый человек сделал поддержку ep93xx в редбуте минимум, а то и в екосе (официальные релизы по ссылке выше - 2003-й год.) Какое отношение автор этого порта имеет к изготовителям Тиона - мне неизвестно. На сайте ЗАО ЗЕО информации о порте екоса и редбута не вижу.
Остаётся надеяться, что кто нибудь, владеющий информацией, направит меня на путь истинный.

Тем не менее: значение регистра 1 CP15: 0xC000007B. Если считать бит V (high vectors) 13-м, то тут 0.
Посмотрел и отмапливание памяти: рег 2 CP15 содержит значение 0x00004000, дамп этого места в памяти:
Код
00004000: 1E 0C 00 00 1E 0C 10 00  1E 0C 20 00 1E 0C 30 00  |.......... ...0.|
00004010: 1E 0C 40 00 1E 0C 50 00  1E 0C 60 00 1E 0C 70 00  |..@...P...`...p.|
00004020: 1E 0C 80 00 1E 0C 90 00  1E 0C A0 00 1E 0C B0 00  |................|
00004030: 1E 0C C0 00 1E 0C D0 00  1E 0C E0 00 1E 0C F0 00  |................|
00004040: 1E 0C 00 01 1E 0C 10 01  1E 0C 20 01 1E 0C 30 01  |.......... ...0.|
00004050: 1E 0C 40 01 1E 0C 50 01  1E 0C 60 01 1E 0C 70 01  |..@...P...`...p.|
00004060: 1E 0C 80 01 1E 0C 90 01  1E 0C A0 01 1E 0C B0 01  |................|
00004070: 1E 0C C0 01 1E 0C D0 01  1E 0C E0 01 1E 0C F0 01  |................|
00004080: 1E 0C 00 04 1E 0C 10 04  1E 0C 20 04 1E 0C 30 04  |.......... ...0.|
00004090: 1E 0C 40 04 1E 0C 50 04  1E 0C 60 04 1E 0C 70 04  |..@...P...`...p.|
000040A0: 1E 0C 80 04 1E 0C 90 04  1E 0C A0 04 1E 0C B0 04  |................|
000040B0: 1E 0C C0 04 1E 0C D0 04  1E 0C E0 04 1E 0C F0 04  |................|
000040C0: 1E 0C 00 05 1E 0C 10 05  1E 0C 20 05 1E 0C 30 05  |.......... ...0.|
000040D0: 1E 0C 40 05 1E 0C 50 05  1E 0C 60 05 1E 0C 70 05  |..@...P...`...p.|
000040E0: 1E 0C 80 05 1E 0C 90 05  1E 0C A0 05 1E 0C B0 05  |................|
000040F0: 1E 0C C0 05 1E 0C D0 05  1E 0C E0 05 1E 0C F0 05  |................|
00004100: 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
...тут флеш-память:
00005800: 12 0C 00 60 12 0C 10 60  12 0C 20 60 12 0C 30 60  |...`...`.. `..0`|
... регистры и пр - пропустил, не так интересно.
дальше нули.
Интерпретирую это так: это описание 64-х секций длиной по 1Мб, виртуальная память объемом 64Мб, состоит из двух физических блоков по 32Мб, первый с физического адреса 0x00000000, и отображен сам на себя, второй с физического адреса 0x04000000, отображен на 0x02000000.
Флешь с физического адреса 0x60000000, вирт. адрес также 0x60000000.

Интересно, что в разных местах Интернета разная информация по редбуту:
одни говорят, что редбут не использует прерываний вообще, "It seems easy,because redboot will not use IRQ vector" (правда, там процессор ARM7TDMI), в другом месте сообщается. что "RedBoot uses an interrupt vector table which is located at address 0xA000A004." (IQ80310). Отсюда я делаю вывод, что использование или неиспользование прерываний в redboot - платформенно-зависимое. И надо бы мне найти исходники или документацию по порту редбута на ep93xx. Но... см выше.

Еще момент. redboot кроме загрузчика, еще и отладчик. Звучит фантастически, но может быть, там отладчик перехватывает обращения к адресам 0..0x1C?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- toykhee_menky   Прерывания без ОС на EP9315   Jun 30 2008, 15:43
- - aaarrr   VIC, наверное, неправильно инициализировали. Код п...   Jun 30 2008, 16:00
|- - toykhee_menky   Цитата(aaarrr @ Jun 30 2008, 22:00) VIC, ...   Jun 30 2008, 16:21
|- - aaarrr   Цитата(toykhee_menky @ Jun 30 2008, 20:21...   Jun 30 2008, 16:47
|- - toykhee_menky   Цитата(aaarrr @ Jun 30 2008, 22:47) Кто в...   Jun 30 2008, 20:01
|- - aaarrr   Цитата(toykhee_menky @ Jul 1 2008, 00:01)...   Jul 1 2008, 12:09
- - sergeeff   Ну я бы под пунктом 0 добавил: Преравание не возни...   Jul 1 2008, 05:58
|- - toykhee_menky   Цитата(sergeeff @ Jul 1 2008, 11:58) Ну я...   Jul 1 2008, 06:30
- - sergeeff   Ну я бы, для начала, написал бы тестовую функцию о...   Jul 1 2008, 08:24
- - sergeeff   Можно посмотреть http://www.siwawi.arubi.uni-kl.de...   Jul 1 2008, 15:46
- - aaarrr   Исходники redboot'а, если охота в них ковырять...   Jul 2 2008, 11:32
|- - toykhee_menky   Цитата(aaarrr @ Jul 2 2008, 17:32) Исходн...   Jul 2 2008, 13:14
- - sergeeff   Ну вот, осталось посмотреть, что же сидит в таблиц...   Jul 2 2008, 11:33
- - sergeeff   А что за процедура вызывается по прерыванию? Как б...   Jul 2 2008, 16:02
- - Desenix   для армов EP9312, S3C2410, LPC2368 всегда писал и ...   Jul 2 2008, 17:10
- - sergeeff   Все очень здорово, но надо же еще обучить процессо...   Jul 2 2008, 18:38
|- - Desenix   ну да, еще стандартный startup забыл приложить, за...   Jul 2 2008, 19:18
|- - toykhee_menky   Цитата(sergeeff @ Jul 3 2008, 00:38) Все ...   Jul 3 2008, 05:44
- - sergeeff   Уважаемый toykhee_menky! 1. Так про то и речь...   Jul 3 2008, 06:15
- - aaarrr   Цитата(toykhee_menky @ Jun 30 2008, 19:43...   Jul 3 2008, 08:25
|- - toykhee_menky   Цитата(aaarrr @ Jul 3 2008, 14:25) Да, а ...   Jul 3 2008, 13:08
- - aaarrr   Значит на ядро прерывание передается, других вариа...   Jul 3 2008, 13:15
- - sergeeff   Ну дак и осталось то, про что я уже говорил - напи...   Jul 3 2008, 14:12
- - toykhee_menky   Всем спасибо. Перешел на eCos.   Jul 12 2008, 13:49
- - sergeeff   Ну, флаг в руки! Думаю там заморочек будет ещ...   Jul 12 2008, 18:41


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

 


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


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