組み込みシステム用に GNU GCC コンパイラに切り替えようとしていますが、チップのメモリ レイアウトが分割されているため、プロジェクトのリンクに問題があります。
RAM section 1: 0x10000-0x12FFF
RAM section 2: 0x18000-0x1BFFF
プロジェクトのデータはセクション 1 に収まりますが、gcc ライブラリからリンクされたデータは収まりません。マップ ファイルの抽出:
.data 0x00012974 0x3c4 c:/tools/gnucr16_v1.1.3-elf/cr16-elf/bin/../lib/gcc/cr16-elf/4.5.1-GNUCR16_v1.1.3/../../../../cr16-elf/lib\libc.a(lib_a-impure.o)
0x00012974 _impure_ptr
.data 0x00012d7c 0x410 c:/tools/gnucr16_v1.1.3-elf/cr16-elf/bin/../lib/gcc/cr16-elf/4.5.1-GNUCR16_v1.1.3/../../../../cr16-elf/lib\libc.a(lib_a-mallocr.o)
0x00012d7c __malloc_av_
0x00013184 __malloc_trim_threshold
0x00013188 __malloc_sbrk_base
libs の .data セクションを 2 番目のセクションに入れることはできますか? 成功せずに別のことを試しました...リンカースクリプトの抽出:
MEMORY
{
SHARED1 : org = 0x10000, len = 0x3000
SHARED2 : org = 0x18000, len = 0x4000
}
SECTIONS
{
.data 0x12004 : { *(.data); } >SHARED1
.data2 0x19000 : { libc*(.data); } >SHARED2
}