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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Передача управления из бута в программу, еще раз о старом
toweroff
сообщение Feb 25 2013, 19:26
Сообщение #16


Гуру
******

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



UPD
Так, становится понятнее

Используются 2 инструкции, исполняемые в Privileged mode - MCR & MRC
Код
MRC p15, 0, <Rd>, c1, c0, 0
MCR p15, 0, <Rd>, c1, c0, 0

Там отключаем ремап или переходим в верхнюю адресацию (но вектора все равно нужно будет скопировать), так что вопрос по скаттеру пока открыт


Цитата(aaarrr @ Feb 25 2013, 22:45) *
Только вектора - они все же CODE, а не DATA.

ээ.. ну да sm.gif

Вы немного опередили, там еще сверху ответ

Еще добавлю скаттер

Вариант 1
Код
LR_IROM1 0x20000000 0x00080000  {; load region size_region
  ER_IROM1 0x20000000 0x00080000  {; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x80000000 0x0000E000  {; RW data
   *.o (RAMFUNC)
   .ANY (+RW +ZI)
  }
  RW_IRAM2 0x00000000 0x00008000 {; 16 KB TCM memory
   *.o (MyVectors)
  }
}

и меняем использование смаппированной области с AHB на DTCM и ITCM:
Код
    MRC     p15, 0, r4, c1, c0, 0; Read CP15
    ORR     r4, r4, #DTCM_enabled; Enable Data TCM
; At power up, the interrupt vector is mapped to addr. 0 already,
; enabling instruction TCM will wipe out the mirror of the
; vector table. A remap will be performed there after. */
    ORR     r4, r4, #ITCM_enabled; Enable Instruction TCM
    ORR     r4, r4, #WB_enabled; Enable Write Buffer
    MCR     p15, 0, r4, c1, c0, 0; Write CP15


ИЛИ

Вариант 2
Код
LR_IROM1 0x20000000 0x00080000  {; load region size_region
  ER_IROM1 0x20000000 0x00080000  {; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x80000000 0x0000E000  {; RW data
   *.o (RAMFUNC)
   .ANY (+RW +ZI)
  }
  RW_IRAM2 0xFFFF0000 0xFFFF001C {; Vectors in HI
   *.o (MyVectors)
  }
}

и меняем адреса векторов
Код
VBIT_enabled    EQU    1<<13


    MRC     p15, 0, r4, c1, c0, 0; Read CP15
    ORR     r4, r4, #VBIT_enabled; Enable Vector location bit to 0xFFFF0000
    MCR     p15, 0, r4, c1, c0, 0; Write CP15

вот только посмотреть нужно, этот диапазон адресов для меня RW или RO. Должна быть RW, иначе смысла бы не было biggrin.gif

Кстати, еще добавлю к посту №6 - http://electronix.ru/forum/index.php?showt...t&p=1140378
Ничего там проц не вычитывает при старте, это он по смещению при исключении переходит rolleyes.gif
Go to the top of the page
 
+Quote Post
toweroff
сообщение Feb 25 2013, 22:15
Сообщение #17


Гуру
******

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



aaarrr, посмотрите, пожалуйста, что я понял не так
пока нужно понимание правильности направления. Для этого ядра нет никаких примеров загрузчиков, сам IAP отработан и проверен, NXP в этом плане все сделала удобно, даже для максимальной частоты ядра, кстати
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 25 2013, 22:38
Сообщение #18


Гуру
******

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



Вариант 2 не годится, т.к. по адресу 0xffff0000 памяти в вашем случае нет.
То есть план такой:
1. включаем TCM
2. внутри __main копируем вектора (да и прочие скоростные вещи, которые не грех в TCM отправить)
3. разрешаем прерывания

P.S. Только 16кБайт - это 0x4000, а не 0x8000. Можно налететь.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Feb 25 2013, 22:58
Сообщение #19


Гуру
******

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



Цитата(aaarrr @ Feb 26 2013, 02:38) *
Вариант 2 не годится, т.к. по адресу 0xffff0000 памяти в вашем случае нет.
То есть план такой:
1. включаем TCM
2. внутри __main копируем вектора (да и прочие скоростные вещи, которые не грех в TCM отправить)
3. разрешаем прерывания

P.S. Только 16кБайт - это 0x4000, а не 0x8000. Можно налететь.

спасибо, ждал ответа
сегодня уже к обеду попробую воплотить во что-то рабочее. Кстати, теперь уже и понятие TCM и код, более скоростной, в этой области выполняемый, совсем по-другому смотрится

еще раз спасибо, доброго утра, наверное sm.gif
Go to the top of the page
 
+Quote Post

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

 


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


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