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

Здравствуйте!

Подскажите пожалуйста какие области, из ниже перечисленных,нужно инициализировать:

- stack;

- bss;

- sbss;

- какая либо другая секция еще(может быть data)?

 

Cпасибо!

Изменено пользователем haker_fox
Похоже, что тема не имеет прямого отношения к микроконтроллерам. Перенёс пока в средства разработки.

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


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

в зависимости от требований.

Обычно надо занулить bss/sbss.

Если data жила в ROM, то её скопировать.

stack - если используется проверка от переполнения стэка.

Также могут быть какие угодно ещё секции и в какой угодно памяти, надо смотреть скрипт линкера (на пример, код, исполняемый из ОЗУ)

Изменено пользователем Immortal_Buka

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


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

4 часа назад, another_one сказал:

Подскажите пожалуйста какие области, из ниже перечисленных,нужно инициализировать:

Инициализировать кому? Про какой язык/компилятор речь? Попробуйте задать вопрос вменяемо.

Если речь про си/си++-компиляторы, то они все сами генерят startup-код, инициализирующий как надо стандартные секции. И никаких дополнительных телодвижений от программиста не требуют. Кроме особых случаев.

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


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

32 minutes ago, jcxz said:

Если речь про си/си++-компиляторы, то они все сами генерят startup-код, инициализирующий как надо стандартные секции. И никаких дополнительных телодвижений от программиста не требуют. Кроме особых случаев.

Не совсем корректно, но не суть важно.

Можно посмотреть исходный код инициализации или отладчиком.

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


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

У меня bare metal mips-mti-elf и мне нужно все самому - линкерскрипт и стартап делать для моего мипса без флеш.

 

Я в принципе все сделал и оно как-то работало, но потом проблема с исходниками и я подзабыл как инициализировал секции, сейчас что-то пошло не так с адресацией и ухожу в рефил.

 

Изменено пользователем haker_fox
Правила 2.1.в.

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


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

16 hours ago, another_one said:

линкерскрипт и стартап делать для моего мипса без флеш

Скрипт линкера и я сам создаю для ARM.

И startup-код тоже пишу сам. Но под ним я подразумеваю файл, где находятся вектора прерываний, инициализация стека и переход на функцию __iar_program_start() (компилятор IAR), которая сама инициализирует все глобальные переменные, вызывает конструкторы классов и т.п., а после вызывает функцию main(). Другими словами "bare metal" вовсе не подразумевает всю инициализацию вручную. Компилятор и сам это всё может сделать.

Но с Вашим инструментарием я не знаком, может быть у него какие-то особенности.

 

И уже как модератор: на форуме принято соблюдение норм и правил русского языка (п. 2.1.в). Я Ваши сообщения немного поправил, но смысла в них больше сильно не стало. Постарайтесь в следующий раз вопрос задавать более полно, не стесняясь использовать знаки препинания, не пропускать слова и т.п., что облегчит нам понимание Вашей проблемы.

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


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

а в какой последовательности должны идти секции в памяти?

Например, у меня все в  ОЗУ и структура следующая(относительно начала СОЗУ):

1) text_ini

2) text_main

3) text_vectors

4) data

5) sdata

6) edata

7) fbss

8 ) sbss

9) heap

10) stack

И сейчас что-то пошло не так

как я понимаю инициализировать нужно только bss и можно еще stack

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


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

On 1/20/2023 at 2:55 PM, another_one said:

а в какой последовательности должны идти секции в памяти?

Попробуйте в IDE от микрочипа создать проект с ядром как у вас.

Он вам и стартап и скрипт линкера сгенерирует. 

Там и посмотрите.

У вас какое ядро ?

On 1/20/2023 at 2:55 PM, another_one said:

как я понимаю инициализировать нужно только bss и можно еще stack

Стэк инициализировать обязательно, т.е. указатель стека.

А как у вас программа в ОЗУ попадает ?

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


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

5 часов назад, another_one сказал:

а в какой последовательности должны идти секции в памяти?

Это определяет программист. Как ему требуется. Определяет в скрипте компоновщика.

5 часов назад, another_one сказал:

Например, у меня все в  ОЗУ и структура следующая(относительно начала СОЗУ):

Тут никто вам не ответит - что означают все эти "fbss", "sbss", "edata" и пр. в неизвестном здесь никому компиляторе/компоновщике. Телепатов, способных угадать ваш компилятор и какие именно данные он кладёт в эти секции, тут тоже нет.

Также нет телепатов, которые могут угадать структуру вашей системы: есть там флешь или нет? откуда грузится прошивка (в ОЗУ при старте с какого-то источника; или сразу находится во флешь)? и т.п.

Можно заглянуть в .map-файл и по нему определить - какие именно данные в какую секцию кладёт компоновщик: куда константные данные и код; куда - инициализированные (нулями или произвольными данными) и неинициализированные переменные. И таким образом определить куда компоновать эти секции - во флешь или в ОЗУ. Возможно многие из этих секций у вас вообще не используются и не нужны. Опять же это определяется по .map-файлу.

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


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

On 1/20/2023 at 8:45 PM, jcxz said:

в неизвестном здесь никому компиляторе/компоновщике.

Он же написал, что GCC

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


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

 

On 1/20/2023 at 10:23 PM, jcxz said:

Где??? Вам в личку написал?

 

On 1/19/2023 at 11:36 AM, another_one said:

 mips-mti-elf

 

 

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


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

А как из этого следует GCC? А если всё-же GCC, то почему не в соответствующей ветке форума?

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


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

On 1/20/2023 at 10:44 PM, jcxz said:

А как из этого следует GCC? 

Другого с таким началом нет. Я не знаю.

Я сам как-то микрочиповским MIPSом побаловался. Чуть-чуть. Но все через микрочипоскую IDE.

И да, у них в IDE компилятор GCC

On 1/20/2023 at 10:44 PM, jcxz said:

А если всё-же GCC, то почему не в соответствующей ветке форума?

А почему не в MIPS ?

Это не ко мне вопрос, а к ТС.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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