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

 
 
85 страниц V  « < 51 52 53 54 55 > »   
Reply to this topicStart new topic
> свежак KGP win32/arm/avr/mips/m68k, GNU tools chain
klen
сообщение Apr 28 2012, 16:44
Сообщение #781


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



1. кроме Genadi Zawidowsy сборку тестил ктонить? желающих было пруд пруди.
2. у меня lto работает не отваливается, но с сингулярнностями - железобетонно выкидывает функцию FreeRTOS vTaskSwitchContex, корни такого поведения видимо в том что эта функция вызывается из асм вставки и lto анализатор туда незалазит не видит что эта функция откудата тянется. я решил эту задачу обявив так ее void __attribute__((used)) vTaskSwitchContext( void ) - таким образом запретив выкидывать ее вообще любому оптимизатору. Бывают проблемы с голыми функциями, но в целом при понимании как это работет можно заставить работать. эффект конечно изумляет - у меня в пределах 30-10% уменьшение объема кода (то что на выходе это страшно жеско пережеванное что совсем не похоже на на то что входило в оптимайзер)
3. про кактус. человек всегда понимает слова друго так как ему хочется. вот опять... перевожу на математический кактус == ( win32 == win64 == Mustdue ) != unix тождество верно! я никого ни вкоем случае не агитировал на win7/8/(и благодаря Вам их еще будет навернго много) по мне пусть микрософт ваще издохнет - я не замечу. я агитирую за то чтоб хотябы паралельно на ту машину на которой ведется разработка потавить хотябы ubuntu и ПОПРОБЫВАТЬ!!! подевелоперит на ней.


ЗЫ. Всех поздравляю с началом Майских праздников. с сЁдня до 3 я телепортируюсь в глухие леса для ловли рыбы и фотаграфирования бабочек... компьторы и прочая для меня умерли как минимум на 4 дня! завидуте мне те кто давно стал наркоманом и не может без интерента и твиттера!! засим откланиваюсь.


мой скрипт для линковки прилагается, только он сильно на CRT код завязан, тоесть у каждого оно может сильно различатся:
CODE
OUTPUT_FORMAT ("elf32-littlearm")
ENTRY(flash_vec_table)
MEMORY
{
flash (rx) : ORIGIN = 0x08000000, LENGTH = 512K - ALIGN( 0K , 4 )
eeprom (rw) : ORIGIN = 0x08000000 + LENGTH(flash), LENGTH = ALIGN( 0K , 4 )
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64K




}

/* define a global symbol _stack_end */
_stack_end_ = ORIGIN(ram) + LENGTH(ram) - 1 - 0x00000000;

/* now define the output sections */
SECTIONS
{
. = 0;
/* set location counter to address zero */
.text :
{
_image_start_ = .;
_vec_start_ = .;
KEEP(*(.flash_vec_table*))
_vec_end_ = .;
_text_start_ = .;
__preinit_array_start = .;
KEEP(*(SORT(.preinit_array*)))
__preinit_array_end = .;
__init_array_start = .;
KEEP(*(SORT(.init_array*)))
__init_array_end = .;
__fini_array_start = .;
KEEP(*(SORT(.fini_array*)))
__fini_array_end = .;
. = ALIGN(4);
*(.text*) /* all .text sections (code) */
*(.rodata*) /* all .rodata* sections (constants, strings, etc.) */
*(.glue_7) /* all .glue_7 sections (no idea what these are) */
*(.glue_7t) /* all .glue_7t sections (no idea what these are) */
*(.gnu*)
*(.gcc*)
. = ALIGN(16);
_text_end_ = .; /* define a global symbol _etext just after the last code byte */
} >flash /* put all the above into FLASH */

.eeprom_emul :
{
_eeprom_start_ = .;
*(.eeprom)
*(.eeprom*)
_eeprom_stop_ = .;
} > eeprom

.bss (NOLOAD):
{
_ram_vec_start_ = .;
*(.ram_vec_table*)
_ram_vec_end_ = .;
_bss_start_ = .;
*(.bss*)
*(COMMON)
_bss_end_ = .;
} >ram

_data_load_start_ = _text_end_;
.data : /* collect all initialized .data sections that go into RAM */
{
. = ALIGN(4);
_data_start_ = .;
_ramfunc_start_ = .;
*(.ramfunc*)
_ramfunc_end_ = .;
. = ALIGN(4);
_data_statrt_ = .;
*(.data*) /* all .data sections */
. = ALIGN(4);
_data_end_ = .; /* define a global symbol marking the end of the .data section */
} >ram AT >flash /* put all the above into RAM (but load the LMA copy into FLASH) */
_data_load_end_ = _data_load_start_ + SIZEOF(.data);

_ext_mem_bank0_data_load_end_ = _data_load_end_ ;


_ext_mem_bank1_data_load_end_ = _ext_mem_bank0_data_load_end_ ;


_ext_mem_bank2_data_load_end_ = _ext_mem_bank1_data_load_end_;


_ext_mem_bank3_data_load_end_ = _ext_mem_bank2_data_load_end_;


_image_end_ = _image_start_ + SIZEOF(.text);

/DISCARD/ :
{
libc.a ( * )
libm.a ( * )
libgcc.a ( * )
*(.ARM.exidx*)
*(.ARM.extab*)
}

.igot 0 : { *(.igot*) }
.vfp11_veneer 0 : { *(.vfp11_veneer*) }
.v4_bx 0 : { *(.v4_bx*) }
.iplt 0 : { *(.iplt*) }
.rel 0 : { *(.rel*) }

/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { *(.comment) }
/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section so we begin them at 0. */
/* DWARF 1 */
.debug 0 : { *(.debug) }
.line 0 : { *(.line) }
/* GNU DWARF 1 extensions */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2 */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
/* SGI/MIPS DWARF 2 extensions */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
}


Сообщение отредактировал IgorKossak - Apr 28 2012, 17:23
Причина редактирования: [codebox]
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 28 2012, 18:42
Сообщение #782


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Я немножко потестировал. Работает, размер тестового примера чуть подрос, с LTO не заработал.
Сейчас добавил
Код
__attribute__ ((used))

перед таблицей векторов, и небольшой пример заработал с LTO! (Но это дома, на линуксовой сборке)
2 Genadi Zawidowski. Получается, что вот эти скрипты от scmRTOS нормально работают с LTO.

2 klen. Эту вашу агитацию за линукс мы все прекрасно понялиsm.gif Счастливо отдохнуть! beer.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ReAl
сообщение Apr 28 2012, 20:58
Сообщение #783


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



«Ну не знаю»™
Пакет старый довольно
arm-kgp-eabi-g++ (Klen's GNU package (KGP) for ARM/elf platform) 4.7.0 20110924 (experimental)
свежего не ставил ещё.

Исходники примера CortexM3/GCC/LPC17XX/4-Debug из trunk с правкой в OS_Target_asm.S (ldr/blx -> bl).
• атрибута used в startup.c для таблицы векторов нет
• линкерный скрипт и makefile стянуты из примеров STM32F1XX с мелкими правками согласно используемого чипа.

Для уверенности сделано такое:
Код
$ svn diff
Index: src/debug/debug.cpp
===================================================================
--- src/debug/debug.cpp    (revision 530)
+++ src/debug/debug.cpp    (working copy)
@@ -111,7 +111,7 @@
        for(;;) {
            OS::sleep(1000);
            uart << "\x1B" "c" "\x1B[2J"     // Reset terminal, clear screen and go home
-                "4-Debug scmRTOS sample\r\n"
+                "4-Debug scmRTOS sample (LTO=" LTO ")\r\n"
                "\x1B[1m\x1B[37;42m"     // set color attributes (white on green)
                "Process\tStack\tCPU%\r\n"
                "\x1B[1m\x1B[37;40m"     // set color attributes (white on black)
Index: makefile
===================================================================
--- makefile    (revision 530)
+++ makefile    (working copy)
@@ -119,6 +119,7 @@
    FLAGS    += -MD
    FLAGS    += $(DEFS)
    FLAGS    += -Wa,-adhlns=$(addprefix $(LSTDIR)/, $(notdir $(addsuffix .lst, $(basename $<))))
+    FLAGS    += -DLTO=\"$(USE_LTO)\"

    AFLAGS    = $(FLAGS)
Т.е. вместе с изменением режима сборки меняется сообщение в терминалке.
И оно меняется, т.е. без атрибута used с LTO всё собирается нормально.



--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 29 2012, 17:37
Сообщение #784


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(ReAl @ Apr 29 2012, 02:58) *
«Ну не знаю»™

Аналогично™ sm.gif
У меня пакет новый (4.8.0 20120422). Собираю пример 1-Eventflag из примеров для STM32.
Без LTO - 1776 байт, работает.
С LTO - 1304 байта, не работает. Полностью отсутствует таблица векторов.
Добавляю аттрибут used к таблице векторов - получаю размер 1784 байта (!), и всё начинает работать.
Вполне возможно, что проскочила какая-то версия, которая сама сразу не выбрасывала таблицу векторов, но я её пропустил.
Хорошо, что теперь есть примерный рецепт приготовления LTO. Смущает только, что работает он пока "с сингулярностями" sm.gif

ЗЫ. А на проектах побольше LTO таки даёт приличный выигрыш по размеру, как и должна.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Apr 30 2012, 06:26
Сообщение #785


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Глобально помогло добавление (used) таблице векторов. Вообще-то логично... отсутствие main сводит на нет всю остальную программу...
линкскрипт не менял.

Сообщение отредактировал Genadi Zawidowski - Apr 30 2012, 06:27
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение May 1 2012, 10:30
Сообщение #786


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Что там с LTO в ветке avr-gcc?
А то странная картина получается: LTO не доделали ещё, а -fwhole-program и --combine уже убралиsad.gif


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 1 2012, 16:06
Сообщение #787


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Такой проблема: на компе установлены Yagarto и YAGARTO Tools.
И не получается компилировать использую KGP.
Как сделать чтобы использовать на одной машине YAGARTO и KGP?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 1 2012, 18:26
Сообщение #788


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



У меня без проблем уживаются codesourcery, kgp, msp-gcc и winavr. В чём проблема, напишите поконкретнее.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 1 2012, 19:50
Сообщение #789


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(AHTOXA @ May 1 2012, 21:26) *
У меня без проблем уживаются codesourcery, kgp, msp-gcc и winavr.

Под windows?
Что-то дополнительно ставите для codesourcery(к примеру)?

Цитата(AHTOXA @ May 1 2012, 21:26) *
В чём проблема, напишите поконкретнее.


Сейчас пути прописал по новой к arm-kgp-eabi-x86_32\bin - заработало.
Проблема самоликвидировалась.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 1 2012, 20:07
Сообщение #790


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Да, под windows. Ничего не ставлю. Валю всё в одну папку, то есть папка bin - общая для всех. И путь к ней прописан в PATH. Там же лежат всякие make, sh и прочие полезности.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 1 2012, 21:26
Сообщение #791


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(AHTOXA @ May 1 2012, 23:07) *
Там же лежат всякие make, sh и прочие полезности.

А откуда тогда под Windows берутся "make, sh и прочие полезности"?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 2 2012, 02:55
Сообщение #792


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Например, отсюда.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение May 2 2012, 03:02
Сообщение #793


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(_Артём_ @ May 2 2012, 00:26) *
А откуда тогда под Windows берутся "make, sh и прочие полезности"?

Онож вызывается? Чего Вы волнуетесь? sm.gif
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 2 2012, 12:18
Сообщение #794


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(AHTOXA @ May 2 2012, 05:55) *
Например, отсюда.

А говорите ничего не ставите...

Цитата(_Pasha @ May 2 2012, 06:02) *
Онож вызывается? Чего Вы волнуетесь? sm.gif

Да я не волнуюсь.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 2 2012, 16:18
Сообщение #795


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(_Артём_ @ May 2 2012, 18:18) *
А говорите ничего не ставите...

Я и не ставлю, оно у меня уже сто лет как есть. Просто привёл пример, где можно взять. Кстати, с WinAVR, емнимс, тоже идут make & sh.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

85 страниц V  « < 51 52 53 54 55 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th June 2025 - 16:52
Рейтинг@Mail.ru


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