реклама на сайте
подробности

 
 
> Помогите найти секцию
Troll
сообщение May 5 2009, 12:24
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 104
Регистрация: 30-06-05
Из: С-Петербург
Пользователь №: 6 406



Доброго дня.

Исходные данные:
- Кусок скрипта линкера
CODE
ENTRY(_exception_vectors)

MEMORY
{
ROM (rx) : ORIGIN = 0x00100000, LENGTH = 0x00040000
RAM (rwx) : ORIGIN = 0x00200000, LENGTH = 0x00008000
REMAPED (rwx) : ORIGIN = 0x00000000, LENGTH = LENGTH(RAM)
}


SECTIONS
{
.vectors : {
KEEP(*(.vectors))
. = ALIGN(64);
} > REMAPED AT > ROM


.text : {
_stext = .;
KEEP(*(.reset_handler)) /* Startup code from .init-section */
...
_etext = . ;
} > ROM


- кусок стартапа:
CODE
.section .vectors
.arm

_exception_vectors:
LDR PC, ResetAddr /* Reset */
LDR PC, UndefAddr /* Undefined instruction */
LDR PC, SWIAddr /* Software interrupt */
LDR PC, PAbortAddr /* Prefetch abort */
LDR PC, DAbortAddr /* Data abort */
NOP /* Reserved */
LDR PC, IRQAddr /* IRQ interrupt */
LDR PC, FIQAddr /* FIQ interrupt */
ResetAddr:
.word ResetHandler
UndefAddr:
.word UndefHandler
SWIAddr:
.word SWIHandler
PAbortAddr:
.word PAbortHandler
DAbortAddr:
.word DAbortHandler
NOP
IRQAddr:
.word IRQHandler
FIQAddr:
.word FIQHandler

/*------------------------------------------------------------------------------
*- Function : reset_handler
*------------------------------------------------------------------------------*/
.section .text
reset_handler:
ResetHandler:
ldr pc, =_low_level_init
...


Все это компилится и собирается.

по map и dump файлам все нормально. Вначале 64 байта для векторов прерывания, затем начиная с 0х100040 идет первая команда после метки ResetHandler (вызов _low_level_init).

Проблема в том, что в бинарнике отсутствует секция векторов (в elf файле секция есть, а здесь...) unsure.gif . То есть сам бинарник начинается с кода команды "ldr pc, =_low_level_init".

Линковка командой: arm-elf-gcc -nostartfiles -Wl,--cref -T elf32-littlearm.lds -lc -lgcc -Wl,-Map=mapfile -Wl,--verbose -n -o _flash.elf cstartup.o lowlevel.o syscalls.o main.o
Бинарник получаю командой: arm-elf-objcopy _flash.elf -O binary _flash.bin

GCC 4.2.2 BinUtils 2.18

Подскажите из-за чего происходит такая фигня.


--------------------
Hemos Pasado
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Troll
сообщение May 6 2009, 11:17
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 104
Регистрация: 30-06-05
Из: С-Петербург
Пользователь №: 6 406



Всем большое спасибо за помощь. a14.gif


--------------------
Hemos Pasado
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01358 секунд с 7
ELECTRONIX ©2004-2016