Отговори на тема  [ 24 мнения ]  Отиди на страница Предишна  1, 2
Еклипс въпроси 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
Ясно....

Аз това за timer.o го сложих там заради това:

Цитат:
ld.exe: error: no memory region specified for loadable section `'


Коя е тази секция?!?


Пон Фев 21, 2011 1:28 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
Секциите по принцип имат атрибуте/типове.

Не е зле да ги указваш, примерно така:

Код:
MEMORY
{
    flash (rx) ....
    ram (rwx)...
}



така линкера ще знае изрично, че flash ти е секция само за read/execute, докато ram става и за писане...

А за това съобщение не съм много сигурен дали пищи за .bss или .data, но и в двата случая ще изпищи ако се пробваш да ги линкнеш в read-only секция...


Пон Фев 21, 2011 2:06 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
Ами нали .bss и .data ги имаме по-нагоре в скрипта. Не би ли трябвало да са си отишли по местата?
Като пращам това което е останало от timer.o във флаша се линква и hex файла е работещ.
Ако пренасоча към рам се получава това:


Цитат:
E:\Rado\Projects\FPC\fpc_src\compiler\arm\ld.exe: Warning: timer.o: Unknown EABI object attribute 67
E:\Rado\Projects\FPC\fpc_src\compiler\arm\ld.exe: warning: section `ei_ram' type changed to PROGBITS
C:\project1.o: In function `main':
project1.pas:(.text.n_main+0x1c): relocation truncated to fit: R_ARM_CALL against symbol `InitTimer' defined in section in timer.o
project1.pas:(.text.n_main+0x20): relocation truncated to fit: R_ARM_CALL against symbol `InitClocks' defined in section in timer.o
project1.pas:(.text.n_main+0x23c): relocation truncated to fit: R_ARM_CALL against symbol `DelayMS' defined in section in timer.o
project1.pas:(.text.n_main+0x32c): relocation truncated to fit: R_ARM_CALL against symbol `DelayMS' defined in section in timer.o
c:\project1.pas(172) Error: Error while linking
c:\project1.pas(172) Fatal: There were 1 errors compiling module, stopping


Пон Фев 21, 2011 2:50 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
Не разбирам какво точно местиш...

Но като ти гледам мапинга имаш голяма адресна разлика... Ако е това и местиш код от флаш<-> рам може би ще трябва да си декларираш функциите като long call. Не съм сигурен дали линкера не можеше да променя извикванията автоматично, но в твоя случай той реве и за EABI-то което е кофти...

По принцип стандартно се call-ва с BL инструкция, но тя е с ограничено отместване (зависи дали си с АРМ7 или куртекс, но е до към 1MB). В твоя случай ако местиш код към далечна секция трябва да се пипне и извикването да е през регистър а не с BL.

Честно казано не знам кой трябва да го направи това - дали компилатора или линкера... А и не съм 100% че точно това ти е проблема. Той Цецо разправя че много ги разбирам, ама не е баш тъй... Аз съм си подкарал при мен нещата и вече с години не се занимавам с линкери ;-)


Пон Фев 21, 2011 3:31 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
хммм....

Значи, ето какво открих: След като има файл указан по име в линкерския скрипт (timer.o), то той се линква само там. Линкваше и .bss във флаша.
Отделих я така:

Цитат:
timer_vars :
{
timer.o (.bss)
} >ram


... и линкера изплю това:

Цитат:
timer_vars 0x40000080 0x10
timer.o(.bss)
.bss 0x40000080 0x10 timer.o
0x40000080 m2
0x40000088 m1

datecs_api_r 0x00000eb8 0x378
timer.o()
.iar.rtmodel 0x00000eb8 0x0 timer.o
0x00000eb8 0x190 timer.o
0x00000ff4 DelayUS
0x00001008 DelayTick
0x00000eb8 InitTimer
0x00000f98 DelayMS
0x00000f88 Clocks
0x00000f3c InitClocks
.debug_frame 0x00001048 0x3c timer.o
.debug_frame 0x00001084 0x3c timer.o
.debug_frame 0x000010c0 0x3c timer.o
.debug_frame 0x000010fc 0x3c timer.o
.debug_frame 0x00001138 0x3c timer.o
.debug_frame 0x00001174 0x3c timer.o
.debug_frame 0x000011b0 0x3c timer.o
.ARM.attributes
0x000011ec 0x41 timer.o
*fill* 0x0000122d 0x3 00
.glue_7 0x00001230 0x0 timer.o
.glue_7t 0x00001230 0x0 timer.o
.vfp11_veneer 0x00001230 0x0 timer.o
.v4_bx 0x00001230 0x0 timer.o
0x00001230 _end = .


HEX файла е работещ, но няма въобще секция .text, а функциите са във някаква неименувана секция?!?


Пон Фев 21, 2011 6:27 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
relsys написа:
функциите са във някаква неименувана секция?!?


A в каква трябва да са?

Аз по принцип при компилация си генерирам листинг (викам GCC с "-Wa,-adhlns" ), но ти ако ползваш IAR просто пусни OBJDUMP (с примерно -h) и съответние 0-файл...

Така ще видиш какви "входни секции" имаш... Ако функциите не са в .text.* секции значи компилацията не е много добра, но поне ще видиш какви са секциите и в линкерския скрипт да ги вкараш в правилните изходни секции...


Пон Фев 21, 2011 6:58 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
Ето дъмп от файл компилиран с IAR:

Цитат:
lcd.o: file format elf32-littlearm

Sections:
Idx Name Size VMA LMA File off Algn
0 .comment 0000019f 00000000 00000000 0000067c 2**0
CONTENTS, READONLY
1 .iar.rtmodel 00000000 00000000 00000000 0000081c 2**0
CONTENTS, READONLY
2 .debug_line 000000d0 00000000 00000000 0000081c 2**0
CONTENTS, READONLY, DEBUGGING
3 .debug_info 00000084 00000000 00000000 000008ec 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
4 00000224 00000000 00000000 00000970 2**2 <-- NO NAME SECTION!
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
5 .debug_frame 00000048 00000000 00000000 00000b94 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
6 .iar.debug_line 000000a0 00000000 00000000 00000bec 2**0
CONTENTS, RELOC, READONLY
.
.
.


Ето и от FPC:

Цитат:
..\..\units\arm-embedded\rtl\system.o: file format elf32-littlearm

Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000000 00000000 00000000 00000034 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00000000 00000000 00000034 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000000 00000000 00000000 00000034 2**0
ALLOC
3 .text.n_system_roundandpackint32$byte$qword$$longint 000001f4 00000000 00000000 00000034 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
4 .text.n_system_roundandpackint64$byte$qword$qword$$int64 00000378 00000000 00000000 00000228 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
5 .text.n_system_shift32rightjamming$longword$smallint$longword 00000064 00000000 00000000 000005a0 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
6 .text.n_system_shift128right$qword$qword$smallint$qword$qword 000001b4 00000000 00000000 00000604 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
7 .text.n_system_shift128rightjamming$qword$qword$smallint$qword$qword 00000304 00000000 00000000 000007b8 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
8 .text.n_system_shift64right$longword$longword$smallint$longword$longword 000000ac 00000000 00000000 00000abc 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
.
.
.



Как да укажа безименната секция?


Пон Фев 21, 2011 11:59 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
не знам :oops:


Вто Фев 22, 2011 12:09 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
Първо да благодаря на @miro_atc за помощта.

Реших проблема като всички .bss секции от С обектни файлове ги слагам в РАМ, всички останали във ФЛАШ.

И така, вече имам работеща FPC + Lazarus система за ARM-EMBEDDED като може да използва и С обектни файлове, и библиотеките на IAR.
Ако някой има интерес към такава система, да каже да му драсна един туториал.


Вто Фев 22, 2011 5:49 pm
Профил ICQ WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 24 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни