Перейти к содержанию
    

Как создаются инициализированные переменные в памяти ?

25 minutes ago, Variant99 said:

Поэтому, можно, плиз, на наглядном примере это показать?

Это товарищ TOG покажет.

main найти - плёвое дело. Сделать пустую программу и посмотреть отладчиком при RESET

первым  (для STM) вызывается System_Reset (пусть идёт туда)

потом вызывается __main, который память и инициализирует.

И потом вызывается main(). Вот его то и меняем на свой (но на бумажке записываем) куда нибудь в сводобное место флэш. Но предвательно туда записываем, что нужно поменять в РАМ и потом переходим на записанный на бумажке адрес.

Раз TOG нашел адрес в РАМ, который надо поменять, значит и программа сможет его поменять.

P.S. можно взять ИДУ или Гидру и всё посмотреть. Или взять Кейл и в эмуляторе (если есть для этого процессора) даже потренироваться

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну не факт, что все в описанной вами последовательности делается. Там в общем нет никаких жестких ограничений на порядок вызовов, поэтому... вот лично я знаю примеры, где после вектора сброса вызывается копирование и инициализация переменных, затем SystemInit, который может быть весьма развесистым, затем инит статических конструкторов языка С++, и лишь паааатооооом уже вызовется main(). 

Но даже если и найдете этот main, то что с того то? Массив может быть объявлен где угодно и как угодно. Ну а инициализация глобального массива, она как раз выполняется в той секции, которая сразу после вектора сброса, и еще до входа в main().

7 минут назад, x893 сказал:

Это товарищ TOG покажет.

нууу... я просто подумал, что вы знаете и делали такое... Оказывается, нет. Печалька. Эх.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, Variant99 said:

я просто подумал, что вы знаете и делали такое

Ну если я ему написал, то можно догадаться делал или нет. Да и ничего там секретного нет. Конечно может быть проверка контрольной суммы программы, шифрация кода для исполнения и много чего можно нагородить. Но проверить то можно. 10 минут и ответ есть.

6 minutes ago, Variant99 said:

Ну не факт, что все в описанной вами последовательности делается.

Он про Кейл говорил. Хотя в принципе не важно С/С++ и прочее. ИДА/Гидра в помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...