chosen {
zephyr,flash = &sdram_code; /* (LMA) */
zephyr,sram = &sdram_data; /* (VMA) */
};
/* Первая часть SDRAM: Сюда линкер монолитно уложит весь код ОС и PJSIP */
/* Называем этот регион строго "RAM", чтобы оригинальный linker.ld принял его без правок */
sdram_code: memory@80000000 {
device_type = "memory";
reg = <0x80000000 DT_SIZE_M(4)>;
};
/* Вторая часть SDRAM: Сюда пойдут bss, heap, стек и динамическая память PJSIP */
sdram_data: memory@80400000 {
device_type = "memory";
reg = <0x80400000 DT_SIZE_M(28)>;
};
ещё раз опишу. Если взять твой скрипт с подменой адреса CONFIG_FLASH_BASE_ADDRESS 0x60000000 - то несмотря на то, что в dts мы указываем SDRAM, у нас соберётся код в области VMA=LMA=0x6...., данные VMA=0x804.... LMA=0x6..... Это называется штатный вариант работы платы: такой вариант можно получить просто указав в dts sdram_code=0x6..... sdram_data=0x804....