Сделать свой ассемблерный startup ARM код и потом переход в сишный Thumb. Код асемблерный написал. В конце ассемблера вот такой переход:
Код
LDR R12, Main_Addr
BX R12
IMPORT __program_start
Main_Addr DCD __program_start
Написал сишный код чтобы посмотреть как соберется:
Код
extern int __program_start(void);
int __program_start(void)
{
return 1;
}
Компилится, собираю образ получаю:
Код
Warning : L6323W: Multiple variants of __program_start exist. Using the ARM variant to resolve relocation #0 in init.o(BOOT_NAND_LOADER)
Warning : L6323W: Multiple variants of __program_start exist. Using the ARM variant to resolve relocation #0 in init.o(BOOT_NAND_LOADER)
Warning : L6305W: Image does not have an entry point. (Not specified or not set due to multiple choices.)
В полученом образе получается, что сначала идет функция __program_start, а только потом startup код, который прыгает на __program_start.
Вопрос 1: как ему правильно задать entry point? ENTRY в ассемблере я писал. И в настройках проекта пытался указать имя - упорно невидит.
Вопрос 2: как сделать так чтобы вначале был таки startup код?
Впорос 3: откуда у компилера "Multiple variants of __program_start"? Как это убрать?
Сообщение отредактировал Hexxx - Oct 27 2007, 20:11