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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Сигнатура LPC
3.14
сообщение Jan 12 2007, 14:03
Сообщение #1


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Как автоматизировать процесс вычисления и подстановки сигнатуры?
Использовать только ради этого LPC2000 Flash utility не самый лучший вариант.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
amw
сообщение Jan 12 2007, 17:18
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(3.14 @ Jan 12 2007, 15:03) *
Как автоматизировать процесс вычисления и подстановки сигнатуры?
Использовать только ради этого LPC2000 Flash utility не самый лучший вариант.

Если я правильно понял, может это оно?
http://electronix.ru/forum/index.php?showtopic=23109

Или имеется ввиду сигнатура наличия кода по адресу 0x18?
Я для этого использую самописную программу, подключаемую в Makefile и запускаемую на бинарик.

Сообщение отредактировал amw - Jan 12 2007, 17:15


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
3.14
сообщение Jan 12 2007, 21:42
Сообщение #3


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Именно та что по 0х14 адресу ставится, не поделитесь своей тулзой.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
makc
сообщение Jan 12 2007, 22:51
Сообщение #4


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(3.14 @ Jan 12 2007, 21:42) *
Именно та что по 0х14 адресу ставится, не поделитесь своей тулзой.


Их есть у нас. См. в приложении.
Прикрепленные файлы
Прикрепленный файл  patch_0x14.zip ( 77.54 килобайт ) Кол-во скачиваний: 71
 


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 13 2007, 00:37
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(makc @ Jan 12 2007, 21:51) *
Их есть у нас. См. в приложении.

К делу не относится, но размер приблуды в 163840 байт резанул глаз несоразмерностью решаемой задаче sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
3.14
сообщение Jan 13 2007, 01:42
Сообщение #6


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



2 makc
Спасибо!


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
Alex03
сообщение Jan 14 2007, 13:38
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



А чем жёсткий стартап (область векторов прерываний) не устраивают?
Посчитал один раз контрольную сумму и забыл.
Как например в CW

Код
  .section .vectors, "ax"
  .code 32
  .align 0

_vectors:
  ldr pc, [pc, #reset_handler_address - . - 8]  /* reset */
  ldr pc, [pc, #undef_handler_address - . - 8]  /* undefined instruction */
  ldr pc, [pc, #swi_handler_address - . - 8]    /* swi handler */
  ldr pc, [pc, #pabort_handler_address - . - 8] /* abort prefetch */
  ldr pc, [pc, #dabort_handler_address - . - 8] /* abort data */
#ifdef VECTORED_IRQ_INTERRUPTS
  .word 0xB9205F88                              /* boot loader checksum */
  ldr pc, [pc, #-0xFF0]                         /* irq handler */
#else
  .word 0xB8A06F60                              /* boot loader checksum */
  ldr pc, [pc, #irq_handler_address - . - 8]    /* irq handler */
#endif
  ldr pc, [pc, #fiq_handler_address - . - 8]    /* fiq handler */

reset_handler_address:
  .word reset_handler
undef_handler_address:
  .word undef_handler
swi_handler_address:
  .word swi_handler
pabort_handler_address:
  .word pabort_handler
dabort_handler_address:
  .word dabort_handler
#ifndef VECTORED_IRQ_INTERRUPTS
irq_handler_address:
  .word irq_handler
#endif
fiq_handler_address:
  .word fiq_handler


Иль ради экономии нескольких байт/тактов? ...
Go to the top of the page
 
+Quote Post
makc
сообщение Jan 14 2007, 13:47
Сообщение #8


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(zltigo @ Jan 13 2007, 00:37) *
Цитата(makc @ Jan 12 2007, 21:51) *

Их есть у нас. См. в приложении.

К делу не относится, но размер приблуды в 163840 байт резанул глаз несоразмерностью решаемой задаче sad.gif


Могу сделать на Python'е. Будет на порядки короче. wink.gif
А вообще это все происки C++, который не жалеет байты в век терабайтов. smile.gif


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
3.14
сообщение Jan 14 2007, 14:33
Сообщение #9


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



2 Alex03
Как то боязно, хотя пока так и делаю. Компилятор/линковщик сам решает где чего лежать должно ...


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
makc
сообщение Jan 14 2007, 14:40
Сообщение #10


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(3.14 @ Jan 14 2007, 14:33) *
2 Alex03
Как то боязно, хотя пока так и делаю. Компилятор/линковщик сам решает где чего лежать должно ...


Ничего страшного в этом нет, т.к. стартап и его векторы исключений должны в любом случае лежать в сегменте кода первыми. Если этого не будет, то прошивка вообще не заработает. Кроме того, смещения в приведенном стартапе получаются фиксированные. Так что ничего особенно плохого в таком подходе нет, кроме того, что нужно хотя бы один раз посчитать контрольную сумму либо вручную, либо с помощью сторонней программы. rolleyes.gif


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 14 2007, 14:47
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(makc @ Jan 14 2007, 12:47) *
А вообще это все происки C++, который не жалеет байты в век терабайтов. smile.gif

С++ оно ясно, хотя откомпилировав исходник я не получил такого монстра (см. в приложении). Для
монстрального результата без "соответствующего" компилятора не обойтись smile.gif.
Ну а на С в килобайт 6-7 уложиться можно.
Прикрепленные файлы
Прикрепленный файл  main_p14.rar ( 24.55 килобайт ) Кол-во скачиваний: 38
 


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
3.14
сообщение Jan 14 2007, 15:07
Сообщение #12


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



2 makc
Ну а если вот такой случай:
изначально обработчики прерываний занимали определенный объем, была просчитана сигнатура и забита в стартап. По ходу работы эти обработчики разростлись в размере и сместились в карте памяти т.е. наступил кердык.
Или я что упустил?


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
makc
сообщение Jan 14 2007, 15:11
Сообщение #13


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(zltigo @ Jan 14 2007, 14:47) *
Цитата(makc @ Jan 14 2007, 12:47) *

А вообще это все происки C++, который не жалеет байты в век терабайтов. smile.gif

С++ оно ясно, хотя откомпилировав исходник я не получил такого монстра (см. в приложении). Для
монстрального результата без "соответствующего" компилятора не обойтись smile.gif .
Ну а на С в килобайт 6-7 уложиться можно.


MS Visual С шестой версии - это далеко не лучший компилятор для C++. smile.gif


Цитата(3.14 @ Jan 14 2007, 15:07) *
2 makc
Ну а если вот такой случай:
изначально обработчики прерываний занимали определенный объем, была просчитана сигнатура и забита в стартап. По ходу работы эти обработчики разростлись в размере и сместились в карте памяти т.е. наступил кердык.
Или я что упустил?


В приведенном выше примере стартапа в первых адресах лежат ссылки не на реальные обработчики, а лишь на ячейки памяти с адресами реальных обработчиков. Косвенные ссылки. Поэтому что бы ни происходило с реальными обработчиками, ничего плохого не случится до тех пор, пока ассемблер не изменит свой алгоритм работы и, соответственно, смещения для той таблицы с адресами реальных обработчиков, которая лежит после таблицы исключений.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
3.14
сообщение Jan 14 2007, 15:16
Сообщение #14


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



И все-таки, сместятся обработчики, изменятся и ссылки ...
Наверное все-таки правильнее в стартапе ложить ссылки на обложки обработчиков в которых ссылки на реальные обработчики.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
makc
сообщение Jan 14 2007, 15:22
Сообщение #15


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(3.14 @ Jan 14 2007, 15:16) *
И все-таки, сместятся обработчики, изменятся и ссылки ...
Наверное все-таки правильнее в стартапе ложить ссылки на обложки обработчиков в которых ссылки на реальные обработчики.


Тогда посмотрим на проблему так:
1. В векторе исключения лежит команда загрузки в PC содержимого по фиксированному адресу (косвенная ссылка).
2. По фиксированному адресу, на который ссылается вектор исключения, лежит значение адреса реального обработчика.

Таким образом, если изменится место расположения реального обработчика прерывания, то изменится не адрес ссылки, а только ее значение. При этом, поскольку при вычислении контрольной суммы (сигнатуры) используется адрес ссылки (фиксированный в стартапе), то ровным счетом ничего не изменится.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post

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

 


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


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