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

 
 
 
Reply to this topicStart new topic
> Keil, scatter, вылезаю за диапазон при ремапе
toweroff
сообщение Jun 18 2013, 16:07
Сообщение #1


Гуру
******

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



Всем привет!

Вот такая ситуация.

Вводная - все тот же ARM968E-S

Что делаю:
1. Стартую с адреса внутренней флеш
2. Включаю TCM
3. Инициализация стеков
4. scatter_load должен мне все функции перенести в remap область, включая вектора

Что не получается:
0. Линкер ругается - L6286E
1. Вектора (которые exceptions) - слишком длинное расстояние PC+xx
2. Стеки, все-таки, инициализироваться должны после ремапа ПМСМ

Вот здесь Keil предлагает решение
http://www.keil.com/support/docs/3607.htm

все бы гут, но я тогда вылезу за слово на вектор

Вопросы:
1. Сам по себе ремап - после включения TCM она автоматом маппируется на адрес 0? не нашел этого нигде, ни в арме, ни в доке на проц
2. Как оно вообще нужно сделать првильно с векторами? Пока попробую сделать кусок кода уже в ремап области, чтобы вектора нормально попадали на исключения
3. Скаттер. Все ли в нем правильно?
Код
LR_IROM1 0x20000000 0x00010000        ; load region size_region
{
    RO_IROM1 0x20000000 0x00010000; RO/Exec data
    {
        *.o (RESET, +First)
        *(InRoot$$Sections)
        .ANY (+RO)
    }
    LR_VECTORS 0x00000000 0x8000; ITCM memory
    {
        *.o (MyVectors)
    }
    LR_ITCM_CODE_EXCEPTION +0
    {
        *.o (EXCEPTION)
    }
    LR_STACKS    +0
    {
        *.o (MyStacks)
        *.o (Heap)
        *.o (Stacks)
    }
    LR_ITCM +0
    {
        *.o (RAMFUNC)
    }
    LR_RAM2 0x00400000 0x8000; DTCM memory
    {
        .ANY (+RW, +ZI)
    }
}
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jun 22 2013, 15:23
Сообщение #2


Гуру
******

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



В общем почитал я ARM'овский "Developer Guide", проникся...

В результате имеем следующее:
1. Вектора, стеки, критические секции, обработчики прерываний и т.д. размещаем в отдельных секциях
2. В стартапе, фактически, остаются: а) Размещение стеков; б) Вектора; в) Начальная инициализация
3. В инициализации - а) включаем TCM, там же сразу ремап; б) инициализируем стеки; в) уходим на __main

Вектора самому копировать не надо, все сделает scatterload

Сам скаттер получился вот таким:
Код
LR_IROM1 0x20000000 0x00010000            ; load region size_region
{
    RO_IROM1 0x20000000 0x00010000    ; RO/Exec data
    {
        *.o (RESET, +First)
        *(InRoot$$Sections)
        * (+RO)
    }
    LR_ITCM 0x00000000         ; ITCM memory
    {
        *.o (EXCEPTION, +First)
    }
    LR_STACKS    +0    
    {
        *.o (MyStacks)
        *.o (Heap)
    }
    LR_RAMFUNC +0
    {
        *.o (RAMFUNC)
    }
    LR_DTCM 0x00400000 0x8000    ; DTCM memory
    {
        * (+RW, +ZI)
    }
}

Go to the top of the page
 
+Quote Post
toweroff
сообщение Jun 28 2013, 00:55
Сообщение #3


Гуру
******

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



Один вопрос остался, и вот какого плана
Кто как что использует и есть ли в этом смысл
Поясню.
1. Полагаемся на scatterload и не заморачиваемся
2. Сами помещаем код из образа куда надо (ну хоть какой-то тормоз в разборе кода в плане атак на кристалл)

в пику первому варианту - использование стандартных библиотек, но оно все известно
в то же второго варианта - есть смысл?

Собственно, куда жить-то? sm.gif
зы. Или я гоню волну, которая уже давно успокоилась?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 28 2013, 10:14
Сообщение #4


Гуру
******

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



Цитата(toweroff @ Jun 28 2013, 04:55) *
хоть какой-то тормоз в разборе кода в плане атак на кристалл

А в чем смысл "тормоза"? Если у злоумышленника есть доступ к коду, то какая разница, что у него внутри?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jun 28 2013, 11:32
Сообщение #5


Гуру
******

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



Цитата(aaarrr @ Jun 28 2013, 14:14) *
А в чем смысл "тормоза"? Если у злоумышленника есть доступ к коду, то какая разница, что у него внутри?

ну хоть как-то помучать больше, чем стандартная библиотека sm.gif
хотя, если серьезно, от лукавого это все... если есть код, штат сотрудников - ну +день-неделя, результат-то все равно будет тот же
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 08:49
Рейтинг@Mail.ru


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