LINUX.ORG.RU

Два сегмента по одному адресу

 ,


0

1

Такой скрипт,

MEMORY
{
	RAM (rwx)	: ORIGIN = 0x20000000, LENGTH = 6K
	FLASH (rx)	: ORIGIN = 0x08000000, LENGTH = 16K
}

SECTIONS
{
	.isr : ALIGN(4)
	{
		ld_sisr = . ;

		KEEP(*(.isr))

	} > RAM

	.text : ALIGN(4)
	{
		*(.text)
		*(.text.*)
		*(.rodata)
		*(.rodata.*)
 
		. = ALIGN(4);
		ld_etext = . ;

	} > RAM

	...

и такой код,

.syntax unified
.cpu cortex-m3
.thumb

.section .isr

	.word 0
	.word isr_reset
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0
	.word 0

.section .text

.global isr_reset

isr_reset:

	bl motor_entry

а результат,

$ make dump
  ODUMP  bldc.elf

bldc.elf:     file format elf32-littlearm


Disassembly of section .isr:

20000000 <ld_sisr>:
20000000:       00000000        andeq   r0, r0, r0
20000004:       20000000        andcs   r0, r0, r0
        ...

Disassembly of section .text:

20000000 <isr_reset>:
20000000:       f000 f800       bl      20000004 <motor_entry>

20000004 <motor_entry>:
20000004:       e7fe            b.n     20000004 <motor_entry>
        ...

почему .text кладется в начало RAM, если там уже расположена .isr? Судя по манам такого быть не должно, и не происходит с другими секциями.

★★

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.