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

 
 
> Подозреваю ошибку в параметрах линкера
Croman13n3c
сообщение Dec 12 2012, 11:49
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 1-02-11
Пользователь №: 62 630



Стараюсь перенести проект из CoIDE в Eclipse Juno.
Заготовку makefile`а взял из scmrtos. Сами объектники компилируются, но не собираются в окончательный бинарник:

Код
   text       data        bss        dec        hex    filename
      0          0          0          0          0    exe/PIR_NEW.elf


Подозреваю ошибку в параметрах линкера, но вот что именно не так - хз.

Прикрепленный файл  makefile.txt ( 6.83 килобайт ) Кол-во скачиваний: 169

Прикрепленный файл  LPC1756.ld.txt ( 1.55 килобайт ) Кол-во скачиваний: 191
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Croman13n3c
сообщение Dec 14 2012, 06:11
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 1-02-11
Пользователь №: 62 630



Цитата(Сергей Борщ @ Dec 13 2012, 17:20) *
В map нет ни одного упоминания g_pfnVectors. В каком файле находится объявление этого массива? Компилируется ли этот файл? Передается ли его объектник линкеру?

Находится в startup_LPC17xx.c. Не компилировался и не передавался (упс, еще не собиралась lpc17xxlib), но после исправления лучше не стало - линкер сыплет ошибками
Прикрепленный файл  linker.txt ( 2.38 килобайт ) Кол-во скачиваний: 422


Цитата(mdmitry @ Dec 13 2012, 18:08) *
А не является ли это куском startup-кода от CoIDE, который линкуется им по умолчанию (библиотека) и о котором gcc не знает ничего. (Аналогия с CodeSourcery, версии lite и коммерческая)

Является , после перадачи линкеру объектника - он сыплет ошибками (прикрепил отчет выше)

Цитата(klen @ Dec 13 2012, 21:56) *
похоже на то..... но какбы gcc принципиально никаких предположений не делает - какое ему дело до стартап кода и таблицы векторов - он их и вообще не различает одругого кода - зачем ему оно. это уже ты сам должен скомпилять все что нужно и передать ликуру - это твоя забота чтобы там была таблица векторов и твоя забота чтоб ее линуер использую тови указания в скрипте положил по нужному адресу.

я вот мотрю тоже пока ниче непонятно. если найду косяг отпишусь.

код Reset_Handler в студию


Код
#pragma weak Reset_Handler = Default_Reset_Handler

void Default_Reset_Handler(void)
{
  /* Initialize data and bss */
  unsigned long *pulSrc, *pulDest;

  /* Copy the data segment initializers from flash to SRAM */
  pulSrc = &_sidata;

  for(pulDest = &_sdata; pulDest < &_edata; )
  {
    *(pulDest++) = *(pulSrc++);
  }
  
  /* Zero fill the bss segment.  This is done with inline assembly since this
     will clear the value of pulDest if it is not kept in a register. */
  __asm("  ldr     r0, =_sbss\n"
        "  ldr     r1, =_ebss\n"
        "  mov     r2, #0\n"
        "  .thumb_func\n"
        "zero_loop:\n"
        "    cmp     r0, r1\n"
        "    it      lt\n"
        "    strlt   r2, [r0], #4\n"
        "    blt     zero_loop");


  __asm("  ldr     r0, =_sbss1\n"
          "  ldr     r1, =_ebss1\n"
          "  mov     r2, #0\n"
          "  .thumb_func\n"
          "zero_loop1:\n"
          "    cmp     r0, r1\n"
          "    it      lt\n"
          "    strlt   r2, [r0], #4\n"
          "    blt     zero_loop1");

  /* Setup the microcontroller system. */
  SystemInit();
    
  /* Call the application's entry point.*/
  main();
}


Цитата(_Артём_ @ Dec 13 2012, 23:09) *
Может добавление такой строки
Код
ENTRY(Reset_Handler)

что-то изменит? Или она в другом файле?


Не изменило, в файле startup_LPC17xx.c
Новый map после добавления добавления недостающих файлов:

Прикрепленный файл  PIR_NEW.map.txt ( 211.53 килобайт ) Кол-во скачиваний: 690


После последних исправлений добавил заглушки к newlib - сборка завершена успешно. Надо мне внимательней читать выхлоп средств сборки.
Спасибо за помощь.

Сообщение отредактировал Croman13n3c - Dec 14 2012, 05:59
Go to the top of the page
 
+Quote Post
Petka
сообщение Dec 14 2012, 06:14
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(Croman13n3c @ Dec 14 2012, 09:24) *
....
Не изменило, в файле startup_LPC17xx.c
...

В моём случае всё стало добавляться линкером в выходной файл после добавления в скрипт линкера строки:
Код
ENTRY(g_pfnVectors);
Go to the top of the page
 
+Quote Post



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

 


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


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