РЕДАКТИРОВАТЬ: Взглянув на информацию о GNU AS, я отвечаю на то, что я написал ниже.Я почти уверен, что так же, как в моем примере скрипта компоновщика, пропуская "w", вы отметите этот раздел как недоступный для записи.Звучало правильно, поэтому я попробовал!
Так что, если вы говорите о компоновщике, то я думаю, что вы ищете область памяти скрипта компоновщика.
Например:
MEMORY
{
flash (rx) : org = 0x00000000 , len = 0x00080000
sram (rwx) : org = 0x40000000 , len = 0x00010000
}
Тот факт, что я исключил букву "w" из своего сегмента флэш-памяти, означает, что он доступен только для чтения.Затем в спецификации раздела позже я использую:
SECTIONS
{
/* .text section (executable code) */
.text :
{
blah blah blah
} > flash
_etext = . ;
PROVIDE ( etext = . );
/* .data section (read/write initialized variables) */
.data : AT (_etext)
{
blah blah blah
} > sram
}
Я указываю, где каждый раздел хранится в памяти в спецификации раздела с помощью> flash или> sram, чтобы определить, находится ли он в памяти только для чтения или нет (и "AT (_etext)" указывает, что он запускается только для чтения и копируется позже).
Я знаю, что вы специально спрашивали об ассемблере, но это звучало так, как я и думал.
Надеюсь, это поможет!