| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| GCC - мъки с линкера http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=10113 |
Страница 1 от 1 |
| Автор: | Цецо [ Сря Май 09, 2012 9:15 am ] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Заглавие: | GCC - мъки с линкера | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Много оплетен тоя мануал. 1. Как да разположа константи на фиксиран адрес във флеша? __attribute__(("section_name"))??? Ама аз искам на точен адрес вътре в секцията. Има ли синтаксис дето да го разполага на точен адрес? 2. Дефинирам си секция за разполагане на въпросните константи (стрингове за версии):
Освен това в линкера имам:
В кода съм написал съответно това:
Дотук добре, ама като тръгна да компилирам, ми се получава това:
Чии го търси .bss в региона 08000f4c -> 08001383??? в скрипта .bss е дефинирана така:
Установих, че ако увелича размера на FLASH региона, така, че да побира и .bss секцията нещата се оправят. Айде иницилизационни променливи са. Реших че им трябва флеш регион за първоначално инициализиране. Намалих използването на .bss до минимум за сметка на .data. И получих следния отговор:
Е какво мама му стара дири .data в региона на флеша??? |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Автор: | woody [ Сря Май 09, 2012 11:07 am ] | |||||||||
| Заглавие: | Re: GCC - разполагане на константи на фиксиран адрес | |||||||||
__attribute__((section(".version"))) За абсолютно позициониране можеш така:
Обикновено има смисъл само една структура да е позиционирана на фиксиран адрес, така че слагаш отделна изходна секция за нея. Другата игра за позициониране е да направиш голям ALIGN-мент в линкер скрипта и така да си сигурен къде ще отиде. KEEP е за да включи входните секции дори да нямаш никакви референции към тях (т.е. излишни са от гледна точка на линкера). |
||||||||||
| Автор: | Цецо [ Сря Май 09, 2012 11:10 am ] |
| Заглавие: | Re: GCC - мъки с линкера |
Да това с keep-a го разбрах. С точното позициониране... ще се оправя по заобиколни начини |
|
| Автор: | woody [ Сря Май 09, 2012 11:13 am ] |
| Заглавие: | Re: GCC - мъки с линкера |
Пусни си един .map файл и огледай какво се случва. |
|
| Автор: | Цецо [ Сря Май 09, 2012 11:33 am ] | |||||||||
| Заглавие: | Re: GCC - мъки с линкера | |||||||||
Ми те го какво генерира в map-a.
Аз не виждам нищо ненормално в него...или поне нищо дето да подсказва, що чинят .bss или .data в региона на флеша. |
||||||||||
| Автор: | woody [ Сря Май 09, 2012 11:48 am ] |
| Заглавие: | Re: GCC - мъки с линкера |
Изглежда ОК от птичи поглед. Не видях грешки (не помня дали ги отразяваше тях в .map файла) и като да е побрал всичко в секциите. Ти сигурен ли си че тази грешка е точно от линкера а не нещо друго дето ти е набутано по веригата? |
|
| Автор: | Цецо [ Сря Май 09, 2012 11:54 am ] |
| Заглавие: | Re: GCC - мъки с линкера |
Да. Засега се оказава май, че линкера е гърбав. Тоя е 4.3.2, сложих 4.4.1 и нещата си заспаха. Сега ще видя да пробвам направо с 4.6, че то ми е време май... П.С. С 4.6.1 пък друго дърво: http://old.nabble.com/-Bug-gas-13215--N ... 16436.html Аман вече. Но като направих това което съветват, компилира и линква също без проблеми. Явно дъртия 4.3.2 има някакъв яд и аз естествено уцелих глухата акула. |
|
| Автор: | relsys [ Сря Май 09, 2012 3:34 pm ] | |||||||||
| Заглавие: | Re: GCC - мъки с линкера | |||||||||
Ебати и мъката..... Докато всичко може и би трябвало да изглежда така:
Но това е друга тема. Примерът е с образователна цел, да не изпадаме в поредния безсмислен спор.... |
||||||||||
| Автор: | woody [ Чет Май 10, 2012 10:44 am ] | ||||||||||||||||||
| Заглавие: | Re: GCC - мъки с линкера | ||||||||||||||||||
Всъщност въобще не. |
|||||||||||||||||||
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|