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

Keil 5.38 Разместить константу по заданному адресу во Flash

6 hours ago, Intel4004 said:

Это конечно-же не так

Значит, вы не поняли сути.

6 hours ago, Intel4004 said:

Использование секции .ARM.__AT_address не требует ее определения в скаттер-файле.

Ага, только если ты не определил секцию, значит, это сделал кто-то другой и куда он её поместил- вопрос.

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

1 hour ago, dimka76 said:

Если кроме самой __PLC_params  в этой секции ничего не будет, то однозначно располагаться будет с самого начала секции.

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

11 minutes ago, artemkad said:

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

Это, повторю, плохая идея.

11 minutes ago, artemkad said:

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

Во-первых, порядок размещения устанавливает линковщик, а не среда программирования. И этот порядок описан в доках на линковщик.

Во-вторых, для однозначного размещения существую сегменты, внутри которых помещаются секции, которые тоже можно позиционировать внутри сегмента (терминология ld).

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

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

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


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

On 7/19/2024 at 10:01 AM, tonyk_av said:

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

О каком списке идет речь ? Где этот список ? Кто его формирует ?

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


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

57 минут назад, tonyk_av сказал:

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

Если есть, предположим, две переменные указанные для размещения в этой секции, но в разных объектных файлах, которая из них будет первой?

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


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

9 минут назад, dOb сказал:

В порядке как описано в проекте. IMHO

Как ни странно, но Keil передает линковщику объектные файлы в виде *.o, а потому к порядку описанному в проекте это отношения не имеет.

А вот IAR да, сам передает список и потому уже он устанавливает порядок линковки

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


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

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

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

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

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

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

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

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

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

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