|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 1:26 am
| Автор |
Съобщение |
|
relsys
Ранг: Форумен бог
Регистриран на: Пет Ное 25, 2005 11:41 am Мнения: 1680
|
Ясно....
Аз това за timer.o го сложих там заради това:
Коя е тази секция?!?
|
| Пон Фев 21, 2011 1:28 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
Секциите по принцип имат атрибуте/типове.
Не е зле да ги указваш, примерно така:
така линкера ще знае изрично, че flash ти е секция само за read/execute, докато ram става и за писане...
А за това съобщение не съм много сигурен дали пищи за .bss или .data, но и в двата случая ще изпищи ако се пробваш да ги линкнеш в read-only секция...
|
| Пон Фев 21, 2011 2:06 pm |
|
 |
|
relsys
Ранг: Форумен бог
Регистриран на: Пет Ное 25, 2005 11:41 am Мнения: 1680
|
Ами нали .bss и .data ги имаме по-нагоре в скрипта. Не би ли трябвало да са си отишли по местата?
Като пращам това което е останало от timer.o във флаша се линква и hex файла е работещ.
Ако пренасоча към рам се получава това:
|
| Пон Фев 21, 2011 2:50 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
Не разбирам какво точно местиш...
Но като ти гледам мапинга имаш голяма адресна разлика... Ако е това и местиш код от флаш<-> рам може би ще трябва да си декларираш функциите като long call. Не съм сигурен дали линкера не можеше да променя извикванията автоматично, но в твоя случай той реве и за EABI-то което е кофти...
По принцип стандартно се call-ва с BL инструкция, но тя е с ограничено отместване (зависи дали си с АРМ7 или куртекс, но е до към 1MB). В твоя случай ако местиш код към далечна секция трябва да се пипне и извикването да е през регистър а не с BL.
Честно казано не знам кой трябва да го направи това - дали компилатора или линкера... А и не съм 100% че точно това ти е проблема. Той Цецо разправя че много ги разбирам, ама не е баш тъй... Аз съм си подкарал при мен нещата и вече с години не се занимавам с линкери 
|
| Пон Фев 21, 2011 3:31 pm |
|
 |
|
relsys
Ранг: Форумен бог
Регистриран на: Пет Ное 25, 2005 11:41 am Мнения: 1680
|
хммм....
Значи, ето какво открих: След като има файл указан по име в линкерския скрипт (timer.o), то той се линква само там. Линкваше и .bss във флаша.
Отделих я така:
... и линкера изплю това:
HEX файла е работещ, но няма въобще секция .text, а функциите са във някаква неименувана секция?!?
|
| Пон Фев 21, 2011 6:27 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
A в каква трябва да са?
Аз по принцип при компилация си генерирам листинг (викам GCC с "-Wa,-adhlns" ), но ти ако ползваш IAR просто пусни OBJDUMP (с примерно -h) и съответние 0-файл...
Така ще видиш какви "входни секции" имаш... Ако функциите не са в .text.* секции значи компилацията не е много добра, но поне ще видиш какви са секциите и в линкерския скрипт да ги вкараш в правилните изходни секции...
|
| Пон Фев 21, 2011 6:58 pm |
|
 |
|
relsys
Ранг: Форумен бог
Регистриран на: Пет Ное 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 |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
не знам 
|
| Вто Фев 22, 2011 12:09 am |
|
 |
|
relsys
Ранг: Форумен бог
Регистриран на: Пет Ное 25, 2005 11:41 am Мнения: 1680
|
Първо да благодаря на @miro_atc за помощта.
Реших проблема като всички .bss секции от С обектни файлове ги слагам в РАМ, всички останали във ФЛАШ.
И така, вече имам работеща FPC + Lazarus система за ARM-EMBEDDED като може да използва и С обектни файлове, и библиотеките на IAR.
Ако някой има интерес към такава система, да каже да му драсна един туториал.
|
| Вто Фев 22, 2011 5:49 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 3 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|