ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
221237 Топик полностью
Cepгeй Бopщ (12.11.2010 13:22 - 13:33, просмотров: 106) ответил dimasusl на ... но к сожалению остались вопросы. Я на самом деле и ранее так пробовал, но не получилось. Вот и сейчас попробовав сделать все как было написано в примере, функцию вызвать не удалось.
С Кортексами пока не работаю, пробовал на ARM7 и AVR 
MEMORY
{
  REMAP (rx)   : ORIGIN = 0x00000000, LENGTH = 0x00004000   /* the same size ar RAM */
  ROM (rx)     : ORIGIN = 0x00100000, LENGTH = 0x00008000   /* any SAM7 has at least 32K ROM */
  RAM (rw)     : ORIGIN = 0x00200000, LENGTH = 0x00004000   /* any SAM7 has at least 4K RAM */
}
Ext_func = 0x1234;
SECTIONS
{
OS::TEventFlag ef; // OS::TEventFlag Timer_Ovf; //--------------------------------------------------------------------------- extern "C" void Ext_func(); int main() { Ext_func(); OS::Run(); } Ну и arm-none-eabi-objdump -hSC Example.elf > Example.lss
00100294 <main>:
OS::TEventFlag ef;               //
OS::TEventFlag Timer_Ovf;
//---------------------------------------------------------------------------
extern "C" void Ext_func();
int main()
{
  100294:	e92d4008 	push	{r3, lr}
    Ext_func();
  100298:	ebfc03e5 	bl	1234 <Ext_func>
А листинг содержит, естественно, неразрешенную ссылку:
439              	main:
 440 0000 08402DE9 	.LFB98:
 441              		.loc 1 69 0
 442              		.cfi_startproc
  70:./Src/main.cpp ****     Ext_func();
 443              		@ Function supports interworking.
ARM GAS  D:\Temp\ccCUjnP0.s 			page 30


 444              		@ args = 0, pretend = 0, frame = 0
 445              		@ frame_needed = 0, uses_anonymous_args = 0
 446 0004 FEFFFFEB 		stmfd	sp!, {r3, lr}	@,
 447              	.LCFI4:
 448              		.cfi_def_cfa_offset 8
 449              		.loc 1 70 0
.....
 450              		.cfi_offset 14, -4
 451 0008 08309FE5 		.cfi_offset 3, -8
 452 000c 043093E5 		bl	Ext_func	@
И, кстати, в листинге коды "съехали" далеко от собственно мнемоник команд - это какая-то бага в генераторе листингов (Yagarto 20100501, arm-none-eabi-gcc (GCC) 4.5.0).
И кстати, а в .ld скрипте ведь нужно ставить ";" после объявления "Serial_no = 0x0010003C" в соответствии с синтаксисом?
Да, конечно.