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

 
 
> ARM926E-S, TCM, remap
toweroff
сообщение Jun 3 2013, 14:25
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Добрый день!
Что-то я совсем запутался.
Объясните, пожалуйста, "на пальцах" - как это все происходит.
Смаппировать область не проблема, есть специально выделенный регистр. Но как тогда быть с TCM и векторами прерываний?
Я пытаюсь включить TCM, переношу вектора в RAM, маппирую RAM в регион 0... и улетаю черт-те знает куда
Можно, конечно, мапировать RAM за пределами области TCM, но как быть с векторами?
Получается, что из-за конфликта ремапа и TCM памяти у меня все крашится (?)

UPD
Читать, читать и читать...
Магическое слово - бит V в Control Register of System Control Coprocessor

Продолжаем упражнения sad.gif

Из описания CP15 c1 Control Register
Цитата
Exception vector location bit:
1 = vector address range is 0xFFFF0000 to 0xFFFF001C
0 = vector address range is 0x00000000 to 0x0000001C.


Все бы хорошо, но при попытке записать вектора в область 0xFFFF0000, проц вообще впадает в ступор, отладчик просто отваливается с матюками
Вот что из UM:
Цитата
The ARM968E-S processor has its exception vectors located at address logic 0. Since
flash is the only non-volatile memory available in the LPC29xx, the exception vectors in
the flash must be located at address logic 0 at reset (AHB_RST).


After booting a choice must be made for region 0. When enabled, the Tightly Coupled
Memories (TCMs) occupy fixed address locations in region 0


то есть приходим к тому же самому. Как включить TCM и при этом сохранить вектора также с адреса 0?
Не понимаю, хоть тресни sad.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
toweroff
сообщение Jun 10 2013, 20:26
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Еще вопрос
Exception вектора записаны как
Код
LDR Reset
...

я копирую вектора из области 0x20000000 в 0x00000000 и, конечно, в итоге нифига не получаю перехода на первую команду обработки исключения, ибо она лежит вне диапазона относительного перехода
Какой выход?
Я так вижу, что собрать аналогичный код, но уже в диапазоне remap, и собрать их скаттером "поближе"
Или я бью гору, а шоссе рядом? sm.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 10 2013, 20:50
Сообщение #3


Гуру
******

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



Цитата(toweroff @ Jun 11 2013, 00:26) *
Еще вопрос
Exception вектора записаны как
Код
LDR Reset
...

Ну, так они точно не могут быть записаны sm.gif Можете привести код дословно?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jun 10 2013, 21:20
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(aaarrr @ Jun 11 2013, 00:50) *
Ну, так они точно не могут быть записаны sm.gif Можете привести код дословно?

легко sm.gif
Код
ResetStart
    LDR     PC, ResetAddr
    LDR     PC, CheckUndefined    ; UndefinedAddr
    LDR     PC, CheckUndefined    ; SWI_Addr
    LDR     PC, CheckPrefetch    ; PrefetchAddr
    LDR     PC, CheckAbort        ; DataAbortAddr
    LDR     PC, CheckReserved    ; ReservedAddr
    LDR     PC, IRQ_Addr        ;IRQ_Addr        ; IRQ_Addr
    LDR     PC, FIQ_Addr        ; FIQ_Addr

сейчас (пока sm.gif ) все злопыхание с этим вот...
это вот - злопыханья Кейла с его стартапом

копаю доку на арм и никак не могу понять - там должна (в векторе) быть команда или адрес перехода...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 10 2013, 21:39
Сообщение #5


Гуру
******

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



Цитата(toweroff @ Jun 11 2013, 01:20) *
копаю доку на арм и никак не могу понять - там должна (в векторе) быть команда или адрес перехода...

Команда.

ldr pc, XXX - это на самом деле ldr pc, [pc, #offset]. Если переменные с адресами (ResetAddr, CheckUndefined и т.п.) копируются в TCM вместе с векторами, то все должно работать. Просто посмотрите дизассемблер этого куска.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jun 10 2013, 21:59
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(aaarrr @ Jun 11 2013, 01:39) *
Команда.

ldr pc, XXX - это на самом деле ldr pc, [pc, #offset]. Если переменные с адресами (ResetAddr, CheckUndefined и т.п.) копируются в TCM вместе с векторами, то все должно работать. Просто посмотрите дизассемблер этого куска.

конечно посмотрел
пободался со скаттером... вроде как поднялось.
И началось sm.gif то ли память быстрая, то ли что..
устройство должно "кушать" от меня, как от мастера ии2
пока в ITCM не запихал код - все было ок, в том числе и от SRAM на AHB
и спать бы, и добить кусок, черт его дери sm.gif в и2си все на прерывании, давно все отрегулировано. Перенес код (считай сейчас - в ITCM) - всем кранты...
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 05:46
Рейтинг@Mail.ru


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