Загрузка и запуск адрес и переезды (2020)

2018 написали содержание, внешний вид немного назад в 2020 году, до открытия некоторых заблуждений, а также некоторых проблем компоновки, поэтому здесь , чтобы открыть запись , чтобы сделать это снова, как если бы это были их собственные эти года роста по сравнению. (Тема связана с адресом в сценарии , используемом в сочетании с некоторыми из концепций , полученных фактическое использование, содержание сценария линкера может сослаться  http://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_mono /ld.html#IDX237  )

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

Нужно знать , это программа выбора для запуска голой необходимости металла хранить в памяти и может быть Norflash или NandFlash и может быть выключена , чтобы сохранить все виды статической памяти, хранящуюся в памяти , когда программа считывает выполнение программы декодирования, программа запущена, общее программы настольные босые начинают принимать от 0 кода адреса, наша программа также , естественно , нужно исходить из сохраненного адреса памяти 0, где 0 является программа адреса памяти , только адреса памяти в памяти записи о, это может быть произвольно определена, вы также можете написать программу для хранения промежуточного положения, конечно же , это по- прежнему существует необходимость адреса загрузки программы 0, поэтому для того , чтобы запрограммировать голую доску функционировать должным образом, мы будем сохранять программу по адресу 0.

Но после того, как программа и работает, по разным причинам, не может работать в адрес памяти оригинала, причина здесь может быть:

1. Мы используем Norflash памяти только для чтения памяти (для текущих целей, использование чипа Norflash руководства обеспечивает команда также может быть написана только), что приводит к глобальным переменному , используемым в программе или статической локальные переменные и другие данные и данные ПБС сегмент не может быть изменен, влияя таким образом на логику программы.

2. Используйте NandFlash, чип S3C2440, например, при использовании NandFlash в качестве загрузочного флэш, 2440 Nandflash существуют механизмы , чтобы скопировать содержимое в первую SRAM 4K чип, SRAM адрес как 0 , чтобы запустить программу в это время , если наша программа больше , чем размер 4K, то это вызовет программу не запускать.

Именно из - за наличия указанных выше причин, нужна программа перемещенный в доступной памяти, обычно SDRAM, то SDRAM здесь предполагается , что базовый адрес 0x3000, то нам нужен механизм для программы, так что после запуска программы 0x3000 адрес операции, этот механизм называется переездов , 0x3000 для программы работает адрес .

Во время выполнения адрес является адресом программы работает, независимо от того, где программа хранится, чтобы адрес , что работает, программа будет считать себя решения выполнения для запуска на, все глобальные переменные и статические локальные переменные и другие секции данных или сегмента ПБС данные пробега при адресации адреса для доступа, такие как глобальной переменной а, время выполнения адрес 0x301F, код нужно будет использовать все переменной к значению 0x301F этот адрес доступа или присвоения, на этот раз возникает проблема, наше хранилище программ 0 адрес, а не до переезда, 0x3000 и последующий данные адреса неизвестна, на этот раз 0x301F значение не определено поведение. Точно так же, если есть функция functionA, его во время выполнения адрес 0x321F, может его адрес памяти в 0x11FF, но не перед установкой , используя абсолютную инструкцию перехода , чтобы перейти к адресу не определено поведение во время выполнения.

Это просто программа, сохраненная в адрес 0 является отправной точкой, чтобы начать выполнение программы и работает по адресу 0, но программа чувствовать (время на самом деле компиляции для определения адреса каждой команды, вы можете увидеть разборку) имеет адрес 0x3000 запустить во время выполнения программы, доступ к глобальным переменным можно получить через время выполнения адрес, если проблемы прямого использования. Программа была в состоянии функционировать должным образом, из-за использование позиционно-независимого кода, была относительно прыгать, если вы используете абсолютно прыгать, прыгать прямо тоже проблема.

Переезды соответствующая область заполнена данными и адресных кодов во время выполнения, скважина определяется во время компиляции, адрес памяти имеет все необходимые «материал». 1. Общие переезды, содержащих адреса памяти программ от Я скопировал свой собственный адрес для среды выполнения, 2. очистить раздел ОНБА как.

И, наконец, адрес загрузки , для голого программы платы, структура файла скомпилированного бен структура Norflash 0 хранится по одному адресу, то есть, относительное положение адреса нагрузки и адрес , сохраненный в адресной структуре, которая также влияет на размер файла BIN, Обычно разряд может быть выполнен компактным, а затем переехал , чтобы скопировать данные на адрес во время выполнения нагрузки от адреса , соответствующего адресу выполнения.

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

Следующая диаграмма описывает использование окончательного распределения компоновщик файла сценария памяти.

Мы предполагаем, что, как показано на адрес нагрузки сегмент кода равен 0, то адрес загрузки сегмента данных 0x80, в то время как во время выполнения адреса 0x3000 и 0x31FF, и предполагая, что длина кода 0x80, то после сразу загрузки кода и данных сегментов, бен размер не опустошить как сумма сегмента размеров хранится в нулевом адресе Norflash (здесь не загружен по адресу 0, адрес памяти до 0, адрес памяти, мы поставили перед собой, хочет внести Shucks сохранить, адрес загрузки только противоположные конфигурации, но позволит упростить код равномерную нагрузку на оперативный чип требований равен 0), следующим образом:

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

Экспрессия ограничений пропускной способности, некоторые из них не так четко описаны, если есть сомнения приема, также приветствуют обсуждение отметило, что обмен не указан правильно. Не забудьте раннее сердце.

Опубликовано 19 оригинальных статей · вона похвала 7 · просмотров 6923

рекомендация

отblog.csdn.net/G_METHOD/article/details/104508545