tonyk_av 39 2 часа назад Опубликовано 2 часа назад · Жалоба 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). При размещении переменных во флэш важно знать, что они находятся в нужной странице, которую рано или поздно придётся стирать для перепрограммирования. Не забывайте, что кроме флэша может быть ещё и память с батарейной поддержкой, в которой тоже могут размещаться переменные, конкретные адреса которых никому не интересны, но всем важно, что они попали в нужный диапазон адресов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 52 2 часа назад Опубликовано 2 часа назад · Жалоба On 7/19/2024 at 10:01 AM, tonyk_av said: Если __PLC_params будет первой в списке переменных, размещаемой в секции, то она будет размещаться с самого начала. О каком списке идет речь ? Где этот список ? Кто его формирует ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artemkad 59 1 час назад Опубликовано 1 час назад · Жалоба 57 минут назад, tonyk_av сказал: Если __PLC_params будет первой в списке переменных, размещаемой в секции, то она будет размещаться с самого начала. Если есть, предположим, две переменные указанные для размещения в этой секции, но в разных объектных файлах, которая из них будет первой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dOb 10 56 минут назад Опубликовано 56 минут назад · Жалоба 1 час назад, dimka76 сказал: Где этот список ? В порядке как описано в проекте. IMHO Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artemkad 59 52 минуты назад Опубликовано 52 минуты назад · Жалоба 9 минут назад, dOb сказал: В порядке как описано в проекте. IMHO Как ни странно, но Keil передает линковщику объектные файлы в виде *.o, а потому к порядку описанному в проекте это отношения не имеет. А вот IAR да, сам передает список и потому уже он устанавливает порядок линковки Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться