another_one 0 18 января, 2023 Опубликовано 18 января, 2023 (изменено) · Жалоба Здравствуйте! Подскажите пожалуйста какие области, из ниже перечисленных,нужно инициализировать: - stack; - bss; - sbss; - какая либо другая секция еще(может быть data)? Cпасибо! Изменено 19 января, 2023 пользователем haker_fox Похоже, что тема не имеет прямого отношения к микроконтроллерам. Перенёс пока в средства разработки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Immortal_Buka 0 18 января, 2023 Опубликовано 18 января, 2023 (изменено) · Жалоба в зависимости от требований. Обычно надо занулить bss/sbss. Если data жила в ROM, то её скопировать. stack - если используется проверка от переполнения стэка. Также могут быть какие угодно ещё секции и в какой угодно памяти, надо смотреть скрипт линкера (на пример, код, исполняемый из ОЗУ) Изменено 18 января, 2023 пользователем Immortal_Buka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 18 января, 2023 Опубликовано 18 января, 2023 · Жалоба 4 часа назад, another_one сказал: Подскажите пожалуйста какие области, из ниже перечисленных,нужно инициализировать: Инициализировать кому? Про какой язык/компилятор речь? Попробуйте задать вопрос вменяемо. Если речь про си/си++-компиляторы, то они все сами генерят startup-код, инициализирующий как надо стандартные секции. И никаких дополнительных телодвижений от программиста не требуют. Кроме особых случаев. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 18 января, 2023 Опубликовано 18 января, 2023 · Жалоба 32 minutes ago, jcxz said: Если речь про си/си++-компиляторы, то они все сами генерят startup-код, инициализирующий как надо стандартные секции. И никаких дополнительных телодвижений от программиста не требуют. Кроме особых случаев. Не совсем корректно, но не суть важно. Можно посмотреть исходный код инициализации или отладчиком. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
another_one 0 19 января, 2023 Опубликовано 19 января, 2023 (изменено) · Жалоба У меня bare metal mips-mti-elf и мне нужно все самому - линкерскрипт и стартап делать для моего мипса без флеш. Я в принципе все сделал и оно как-то работало, но потом проблема с исходниками и я подзабыл как инициализировал секции, сейчас что-то пошло не так с адресацией и ухожу в рефил. Изменено 20 января, 2023 пользователем haker_fox Правила 2.1.в. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
another_one 0 19 января, 2023 Опубликовано 19 января, 2023 · Жалоба И еще вопрос, - нужно ли указывать адрес Frame pointer? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 20 января, 2023 Опубликовано 20 января, 2023 · Жалоба 16 hours ago, another_one said: линкерскрипт и стартап делать для моего мипса без флеш Скрипт линкера и я сам создаю для ARM. И startup-код тоже пишу сам. Но под ним я подразумеваю файл, где находятся вектора прерываний, инициализация стека и переход на функцию __iar_program_start() (компилятор IAR), которая сама инициализирует все глобальные переменные, вызывает конструкторы классов и т.п., а после вызывает функцию main(). Другими словами "bare metal" вовсе не подразумевает всю инициализацию вручную. Компилятор и сам это всё может сделать. Но с Вашим инструментарием я не знаком, может быть у него какие-то особенности. И уже как модератор: на форуме принято соблюдение норм и правил русского языка (п. 2.1.в). Я Ваши сообщения немного поправил, но смысла в них больше сильно не стало. Постарайтесь в следующий раз вопрос задавать более полно, не стесняясь использовать знаки препинания, не пропускать слова и т.п., что облегчит нам понимание Вашей проблемы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
another_one 0 20 января, 2023 Опубликовано 20 января, 2023 · Жалоба а в какой последовательности должны идти секции в памяти? Например, у меня все в ОЗУ и структура следующая(относительно начала СОЗУ): 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 20 января, 2023 Опубликовано 20 января, 2023 · Жалоба 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 Стэк инициализировать обязательно, т.е. указатель стека. А как у вас программа в ОЗУ попадает ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 20 января, 2023 Опубликовано 20 января, 2023 · Жалоба 5 часов назад, another_one сказал: а в какой последовательности должны идти секции в памяти? Это определяет программист. Как ему требуется. Определяет в скрипте компоновщика. 5 часов назад, another_one сказал: Например, у меня все в ОЗУ и структура следующая(относительно начала СОЗУ): Тут никто вам не ответит - что означают все эти "fbss", "sbss", "edata" и пр. в неизвестном здесь никому компиляторе/компоновщике. Телепатов, способных угадать ваш компилятор и какие именно данные он кладёт в эти секции, тут тоже нет. Также нет телепатов, которые могут угадать структуру вашей системы: есть там флешь или нет? откуда грузится прошивка (в ОЗУ при старте с какого-то источника; или сразу находится во флешь)? и т.п. Можно заглянуть в .map-файл и по нему определить - какие именно данные в какую секцию кладёт компоновщик: куда константные данные и код; куда - инициализированные (нулями или произвольными данными) и неинициализированные переменные. И таким образом определить куда компоновать эти секции - во флешь или в ОЗУ. Возможно многие из этих секций у вас вообще не используются и не нужны. Опять же это определяется по .map-файлу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 20 января, 2023 Опубликовано 20 января, 2023 · Жалоба On 1/20/2023 at 8:45 PM, jcxz said: в неизвестном здесь никому компиляторе/компоновщике. Он же написал, что GCC Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 20 января, 2023 Опубликовано 20 января, 2023 · Жалоба 1 час назад, dimka76 сказал: Он же написал, что GCC Где??? Вам в личку написал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 20 января, 2023 Опубликовано 20 января, 2023 · Жалоба On 1/20/2023 at 10:23 PM, jcxz said: Где??? Вам в личку написал? On 1/19/2023 at 11:36 AM, another_one said: mips-mti-elf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 20 января, 2023 Опубликовано 20 января, 2023 · Жалоба А как из этого следует GCC? А если всё-же GCC, то почему не в соответствующей ветке форума? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 20 января, 2023 Опубликовано 20 января, 2023 · Жалоба 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 ? Это не ко мне вопрос, а к ТС. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться