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

 
 
> Вопрос о прерываниях, памяти и MMU EP9315(+)
Дмитрий Агапов
сообщение Apr 13 2009, 05:54
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 12-02-09
Пользователь №: 44 757



Доброе утро вам

Пишу для тиона про 2 без ОС.

Программа скомпилирована по адресу 0x60000000 и оттуда же работает. Использую для заливки download.exe.
Оба банка SDRAM инициализированы и вроде как работают, поскольку в первом видео память на TFT. Стек может располагаться в любом банке, проверил, инициализируются все 4 банка SDRAM.

Вектора прерываний скопированы в SDRAM банк 0, по адресу 0x00000000, указал в файле линкера и проверил чтением из оттуда. Все вроде ок.

MMU выключен.

Но как только приходит прерывание, контроллер уходит непонятно куда...

По адресу 0x18 поставил включение светодиодов, никаких переходов ни по каким адресам из контроллера прерываний не делаю.

Но он туда не приходит...

В чем может быть дело? Или обязательно нужно MMU конфигурировать?
Куда копать?

2 дня и 2 ночи...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Дмитрий Агапов
сообщение Apr 13 2009, 08:54
Сообщение #2





Группа: Новичок
Сообщений: 8
Регистрация: 12-02-09
Пользователь №: 44 757



Это если линковать с адреса 0. если линковать со стартовым адресом 0x60000000, там там будет адрес порта E.

Вот что показывает IDA при загрузке в него готового бинарника. Вроде там так раз указатель на константу в FLASH(стартовый адрес 0x00000000). Ошибаюсь?

ROM:60000000 43 DCB 0x43 ; C
ROM:60000001 52 DCB 0x52 ; R
ROM:60000002 55 DCB 0x55 ; U
ROM:60000003 53 DCB 0x53 ; S
ROM:60000004 ; ---------------------------------------------------------------------------
ROM:60000004 5C F2 9F E5 LDR PC, =loc_60000058
ROM:60000008 ; ---------------------------------------------------------------------------
ROM:60000008 00 00 A0 E1 NOP
ROM:6000000C 00 00 A0 E1 NOP
ROM:60000010 00 00 A0 E1 NOP
ROM:60000014 00 00 A0 E1 NOP
ROM:60000018 00 00 A0 E1 NOP
ROM:6000001C 00 00 A0 E1 NOP
ROM:60000020 00 00 A0 E1 NOP
ROM:60000024 00 00 A0 E1 NOP
ROM:60000028 00 00 A0 E1 NOP
ROM:6000002C 00 00 A0 E1 NOP
ROM:60000030 00 00 A0 E1 NOP
ROM:60000034 00 00 A0 E1 NOP
ROM:60000038 00 00 A0 E1 NOP
ROM:6000003C 00 00 A0 E1 NOP
ROM:60000040 24 12 9F E5 LDR R1, =0x80840020
ROM:60000044 00 20 91 E5 LDR R2, [R1]
ROM:60000048 FC 20 02 E2 AND R2, R2, #0xFC
ROM:6000004C 03 20 82 E3 ORR R2, R2, #3
ROM:60000050 00 20 81 E5 STR R2, [R1]
ROM:60000054
ROM:60000054 loc_60000054 ; CODE XREF: ROM:loc_60000054j
ROM:60000054 FE FF FF EA B loc_60000054
ROM:60000058 ; ---------------------------------------------------------------------------

...
...
...

ROM:60000268 58 00 00 60 off_60000268 DCD loc_60000058 ; DATA XREF: ROM:60000004r
ROM:6000026C 20 00 84 80 dword_6000026C DCD 0x80840020 ; DATA XREF: ROM:60000040r
ROM:6000026C ; ROM:loc_60000058r
ROM:60000270 FC 50 01 80 dword_60000270 DCD 0x800150FC ; DATA XREF: ROM:60000068r
ROM:60000274 55 AA 00 00 dword_60000274 DCD 0xAA55 ; DATA XREF: ROM:60000078r
ROM:60000278 00 00 94 80 dword_60000278 DCD 0x80940000 ; DATA XREF: ROM:6000007Cr
ROM:6000027C 28 00 21 00 dword_6000027C DCD 0x210028 ; DATA XREF: ROM:60000088r
ROM:60000280 00 00 06 80 dword_60000280 DCD 0x80060000 ; DATA XREF: ROM:6000009Cr
ROM:60000284 18 00 08 80 dword_60000284 DCD 0x80080018 ; DATA XREF: ROM:60000114r











Ничего не понимаю... в стартате Reset_Handler этот код работает... Где то я гоню.(?)

вот показан код и для прерывания и при исполнении из флэш(Reset_Handler).

У ARM же нет никаких сегментов? чем будет отличаться при исполнении код из rom и ram?

или вот эта команда LDR R1, =0x80840020 указывает СМЕЩЕНИЕ? блин...



60000038 00 00 A0 E1 NOP
ROM:6000003C 00 00 A0 E1 NOP
ROM:60000040 24 12 9F E5 LDR R1, =0x80840020
ROM:60000044 00 20 91 E5 LDR R2, [R1]
ROM:60000048 FC 20 02 E2 AND R2, R2, #0xFC
ROM:6000004C 03 20 82 E3 ORR R2, R2, #3
ROM:60000050 00 20 81 E5 STR R2, [R1]
ROM:60000054
ROM:60000054 loc_60000054 ; CODE XREF: ROM:loc_60000054j
ROM:60000054 FE FF FF EA B loc_60000054
ROM:60000058 ; ---------------------------------------------------------------------------
ROM:60000058
ROM:60000058 loc_60000058 ; CODE XREF: ROM:60000004j
ROM:60000058 ; DATA XREF: ROM:off_60000268o
ROM:60000058 0C 12 9F E5 LDR R1, =0x80840020
ROM:6000005C 00 20 91 E5 LDR R2, [R1]
ROM:60000060 FC 20 02 E2 AND R2, R2, #0xFC
ROM:60000064 00 20 81 E5 STR R2, [R1]
ROM:60000068 00 D2 9F E5 LDR SP, =0x800150FC
ROM:6000006C 00 00 0F E1 MRS R0, CPSR
ROM:60000070 C0 00 80 E3 ORR R0, R0, #0xC0
ROM:60000074 00 F0 29 E1 MSR CPSR_cf, R0
ROM:60000078 F4 01 9F E5 LDR R0, =0xAA55
Go to the top of the page
 
+Quote Post



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

 


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


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