|
|
  |
CRP защита LPC2300, в KEIL uvision4 |
|
|
|
Nov 8 2012, 04:23
|
Местный
  
Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866

|
Реализация записи константы по определенному адресу от IDE мало зависит. Или Вы ждете волшебного окошечка с галочками? =) PS: Вы должны зарезервировать в линкере область памяти (я создаю секцию под именем crp) и написать что-то типа: Код #define NO_CRP 0xFFFFFFFF #define CRP1_MAGIC 0x12345678 #define CRP2_MAGIC 0x87654321 //#define CRP3_MAGIC 0x43218765 #define CURRENT_CRP_SETTING NO_CRP
const unsigned int g_crp_magic_word __attribute__((section("crp"))) = CURRENT_CRP_SETTING; PPS: Цитата(ControllerZ @ Nov 8 2012, 05:36)  после этого видно что по нужному адресу записано нужное значение, но вокруг этого адреса присутсвует код А что Вы хотите, чтобы было вокруг этого адреса?..
--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
|
|
|
|
|
Nov 8 2012, 08:18
|

Частый гость
 
Группа: Свой
Сообщений: 197
Регистрация: 6-08-05
Пользователь №: 7 409

|
Цитата(Lotor @ Nov 8 2012, 09:23)  Реализация записи константы по определенному адресу от IDE мало зависит. Или Вы ждете волшебного окошечка с галочками? =) PS: Вы должны зарезервировать в линкере область памяти (я создаю секцию под именем crp) и написать что-то типа: Код #define NO_CRP 0xFFFFFFFF #define CRP1_MAGIC 0x12345678 #define CRP2_MAGIC 0x87654321 //#define CRP3_MAGIC 0x43218765 #define CURRENT_CRP_SETTING NO_CRP
const unsigned int g_crp_magic_word __attribute__((section("crp"))) = CURRENT_CRP_SETTING; PPS: А что Вы хотите, чтобы было вокруг этого адреса?.. Ок попробую ваш метод, а в линкере. Но этот метод я видел на сайте KEIL и он почемуто у меня не прокатил, т.к. там отличия в моем sct файле и sct файле в документации. Вокруг этого адреса я бы хотел видеть, код после векторов прерывания начинался допустим с 0x200 адреса, а промежуток от векторов до CRP в 0xFF
|
|
|
|
|
Nov 8 2012, 08:23
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата Реализация записи константы по определенному адресу от IDE мало зависит. От компилятора и линкера подобные вещи всё-таки зависят. Как вариант, можно просто написать Код const int CRP __attribute__ ((at(0x1FC))) = ...; без редактирования скаттер-файла.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Nov 8 2012, 08:41
|
Местный
  
Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866

|
Цитата(ControllerZ @ Nov 8 2012, 12:18)  Ок попробую ваш метод, а в линкере. Но этот метод я видел на сайте KEIL и он почемуто у меня не прокатил, т.к. там отличия в моем sct файле и sct файле в документации. Вокруг этого адреса я бы хотел видеть, код после векторов прерывания начинался допустим с 0x200 адреса, а промежуток от векторов до CRP в 0xFF Резервирование в линкере области памяти и подразумевает редактирование sct файла. Цитата(esaulenka @ Nov 8 2012, 12:23)  От компилятора и линкера подобные вещи всё-таки зависят. Для Вас компилятор/линкер и IDE одно и тоже? Можно компилятор iar/keil прикрутить к ide эклипсу.
--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
|
|
|
|
|
Nov 8 2012, 16:06
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 23-02-09
Из: Одесская обл.
Пользователь №: 45 249

|
Цитата(ControllerZ @ Nov 7 2012, 17:52)  Подскажите как правильно включить CRP защиту для LPC2300 в среде программирования uvision4 В файле "LPC2300.s", в самом его конце, перед последней строкой, содержащей слово "END", вставляете вот это: AREA |.ARM.__at_0x01FC|, CODE, READONLY ABS_ADDRESS DCD 0x87654321 AREA |.text|, CODE, READONLY Больше ничего править не надо. Разумеется, число 0x87654321 для CRP2. Для других режимов защиты примяняйте соответствующуие коды
|
|
|
|
|
Nov 8 2012, 17:31
|

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

|
Цитата(Ivan Panov @ Nov 8 2012, 20:06)  В файле "LPC2300.s", в самом его конце, перед последней строкой, содержащей слово "END", вставляете вот это:
AREA |.ARM.__at_0x01FC|, CODE, READONLY ABS_ADDRESS DCD 0x87654321 AREA |.text|, CODE, READONLY
Больше ничего править не надо. Разумеется, число 0x87654321 для CRP2. Для других режимов защиты примяняйте соответствующуие коды а почему не в сях? я всегда примерно такое вставляю (разумеется, средства для заливки софта есть) Код #define IS_DEBUG 0 #define IS_EMC 0 #define IS_WDT 0 #define IS_UART 0 #define IS_SPI 0 #define IS_I2C 0
#if (IS_DEBUG) unsigned int const CRP3 __attribute__((at(0x1FC))) = 0xFFFFFFFF; #else unsigned int const CRP3 __attribute__((at(0x1FC))) = 0x43218765; #endif
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|