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

 
 
> 100 байт не хватает
Огурцов
сообщение Dec 25 2008, 20:25
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



В общем, называется "приплыли", допрограммировались - бутлодырь перестал вмещаться в размер бутсекции, т.е. в 2k. Последним делом добавлено нечто такое:

Код
void Bus_transmit_packet(uint8 aStatus)
{
    uint16 vCrc;

    Bus_transmit_byte(Slp_packet_end);
    Bus_transmit_byte(Slp_packet_end);
    Bus_transmit_byte(Slp_sysdev_program | Slp_response_mask);
//    vCrc = vxl_get_crc16(Vxl_crc_ccitt_initial_value, Slp_sysdev_program | Slp_response_mask);
    Bus_staff_n_transmit_byte(aStatus);
    vCrc = vxl_get_crc16(0x7976, aStatus);
    Bus_staff_n_transmit_byte(vCrc >> 8);
    Bus_staff_n_transmit_byte(vCrc & 0xFF);
    Bus_transmit_byte(Slp_packet_end);
}

Что занимает примерно 60 байт. Предварительное заполнение массива и передача массива хоть и напрашивалась явно, но почти ничего не изменила или даже хуже.
Однако, где бы наскрести еще сотню байт ? (таблица векторов еще не затронута, как и секции инициализации/финализации) Поделитесь, pls, примером оптимизации - сам я боюсь все порушить и грохнуть что-либо нужное.

M88, GCC(WinAVR-20060421), cкрипты линкера от WinAVR-20081205

Сообщение отредактировал Огурцов - Dec 25 2008, 20:26
Go to the top of the page
 
+Quote Post
6 страниц V  < 1 2 3 4 > »   
Start new topic
Ответов (15 - 29)
ReAl
сообщение Dec 26 2008, 14:02
Сообщение #16


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

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



Цитата(_Pasha @ Dec 26 2008, 12:39) *
Опция --relax в командной строке линкера ?
Можно так (и в любом случае не вредно, так как оно сделает ещё и замену rcall/ret на rjmp), но можно и ключик -mshort-calls компилятору.


Цитата(_Pasha @ Dec 26 2008, 12:39) *
1. В листинге можно найти много смешного, байт эдак на 100. В основном это jmp вместо rjmp, ...
Ну это явные кандидаты на
-mshort-calls, чтобы сразу компилятор не ставил, а --relax линкеру полировку наведёт.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Dec 26 2008, 15:07
Сообщение #17


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(zltigo @ Dec 26 2008, 10:58) *
Да не тот случай sad.gif

Совершенно согласен, тут проза жизни, а там какая-то сказка, и если отбросить кудрявые фантазии афтара, от сказки останется абсолютный ноль.

Цитата(zltigo @ Dec 26 2008, 10:58) *
Тут наверняка просто нечто писанное левой ногой и на 2K нахождение 100 байт не требует сверхестественных потуг.

Ну зачем так голословно, левой ногой (на ваш взгляд) там писано от силы байт триста, остальное уже заоптимизировано реальным профи. Но это не означает, что сотню байт выжать невозможно, иначе я бы и вопроса поднимать не стал.


Цитата(ReAl @ Dec 26 2008, 14:02) *
Ну это явные кандидаты на
-mshort-calls, чтобы сразу компилятор не ставил, а --relax линкеру полировку наведёт.

--relax не помогает, -mshort-calls выжимает 110 байт, но только для m168, для m88 без изменений.



Цитата(Diz @ Dec 26 2008, 13:09) *
Посмотрите, есть ли у в строке для компилятора ключики
-ffunction-sections и -fdata-sections, а для линкера --gc-sections.

Есть. На всякий случай
Код
## Compile options common for all C compilation units.
CFLAGS = $(COMMON)
CFLAGS += -Wall -gdwarf-2 -std=gnu99 -DA40520101 -ffunction-sections -fdata-sections  -mshort-calls  -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d

## Assembly specific flags
ASMFLAGS = $(COMMON)
ASMFLAGS += $(CFLAGS)
ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2

## Linker flags
LDFLAGS = $(COMMON)
LDFLAGS += -Wl,--verbose -Wl,--gc-sections  -Wl,--relax  -Wl,-Map=bootloader.map
LDFLAGS += -Wl,-section-start=.text=0x1800
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 26 2008, 16:06
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Огурцов @ Dec 26 2008, 18:07) *
Ну зачем так голословно...

Ну не менее голословно, тем более с учетом некторых ранее изложенных на форуме взглядов на программирование, чем Ваше утверждение
Цитата
...уже заоптимизировано реальным профи.

Решить это просто - выложить сюда на обозрение. Полагаю, что найдется несколько желающих,ну скажим так, посоревноваться с "реальным профи" не только в абстрактных рассуждениях о постфактум указаниях компилятору в духе "ну сделай, хоть что-нибудь еще".


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
singlskv
сообщение Dec 26 2008, 16:59
Сообщение #19


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(zltigo @ Dec 26 2008, 19:06) *
Решить это просто - выложить сюда на обозрение. Полагаю, что найдется несколько желающих,ну скажим так, посоревноваться с "реальным профи" не только в абстрактных рассуждениях о постфактум указаниях компилятору в духе "ну сделай, хоть что-нибудь еще".
+1
Да, автор, выкладывайте, в конце концов, бутлодырь не очень комерческая вещь..
А мы посмотрим - пооптимизируем...

только если решитесь выкладывать, то нужны точные указания по сборке,
ну там версия компилятора, тип проца, командная строка итд...
то есть если не будет проблем со сборкой, готов посмотреть/пооптимизировать..
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Dec 26 2008, 17:40
Сообщение #20


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Вообще, меня не уполномачивали публиковать исходники, так что для текущей версии (+98 байт) это исключено. Но если гарантированно найдутся желающие с этой версией посоревноваться, что делать, я наверно напрягусь и соберу изначальный вариант (кажется байт 500-700 плюсом). В этом случае вопросов с авторскими правами не возникнет.


Цитата(zltigo @ Dec 26 2008, 16:06) *
Ну не менее голословно, [skipped] чем Ваше утверждение
Цитата
уже заоптимизировано реальным профи.


Смиялсо. Значит вы готовы ?

Цитата(zltigo @ Dec 26 2008, 16:06) *
постфактум указаниях компилятору в духе "ну сделай, хоть что-нибудь еще".

В общем, да. Но высказанные идеи, в определенном смысле, были полезны.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 26 2008, 17:54
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Огурцов @ Dec 26 2008, 20:40) *
Смиялсо.

И опять без всякой на то причины sad.gif.
Цитата(Огурцов @ Dec 26 2008, 20:40) *
Значит вы готовы ?

Сегодня скоротать часок-другой и освежить AVR? На том, что Вы нагородили - да. На каком нибудь взятом из интернету нескольсотбайтовом загрузчике и заброшенном сюда - нет.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Dec 26 2008, 18:11
Сообщение #22


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(zltigo @ Dec 26 2008, 17:54) *
И опять без всякой на то причины sad.gif.

Почему без ? Над тем, что вы в слепую, совершенно не зная расклада, называете одного уважаемого человека "левой ногой".

Цитата(zltigo @ Dec 26 2008, 17:54) *
Сегодня? На том, что Вы нагородили - да. На каком нибудь взятом из интернету нескольсотбайтовом загрузчике и заброшенном сюда - нет.

Сегодня, завтра, в выходные. Можно до нового года. Можно и в праздники, если вам там нечем будет занятся. Последний вариант хоть и прикольный, но мне уже не очень интересен.
Исходники таки взяты из интернета, ужмете их до размера "левой ноги", после чего я добавлю "свою нагородили", а потом вы ужмете их еще раз. Размер не должен превышать 2k. Или хотя бы 2k+98 байт. GCC/WinAVR.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 26 2008, 18:22
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Огурцов @ Dec 26 2008, 21:11) *
Почему без ? Над тем, что вы в слепую, совершенно не зная расклада, называете одного уважаемого человека "левой ногой".

Ну так вываливайте СВОИ выпирающие за 2K исходники, посмотрю на какую степень моего уважения они могут претендовать.
Цитата
Сегодня, завтра, в выходные. Можно до нового года.

Не можно. Завтра еду в Питер по делам.
Цитата
Можно и в праздники, если вам там нечем будет занятся.

Мне будет и чем и с кем.
Цитата
Исходники таки взяты из интернета, ужмете их до размера "левой ноги", после чего я добавлю "свою нагородили", а потом вы ужмете их еще раз.

Не наводите тень на плетень сначала, потом, а потом, а после, если, только WinAVR... Либо смотрим то, о чем СЕЙЧАС идет речь, либо нет.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Dec 26 2008, 18:28
Сообщение #24


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Цитата(zltigo @ Dec 26 2008, 18:22) *
Либо смотрим то, о чем СЕЙЧАС идет речь, либо нет.

То что сейчас есть не смотрим однозначно. Могу из этого "убрать" оптимизацию. Могу просто свои куски "вывалить". Но. вообще, я сомневаюсь, что вы ужмете их раза в два.

зы: WinAVR - это без вариантов. IAR не подходит по медико-этическим соображениям.

Сообщение отредактировал Огурцов - Dec 26 2008, 18:30
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 26 2008, 18:45
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Огурцов @ Dec 26 2008, 21:28) *
То что сейчас есть не смотрим однозначно. Могу из этого "убрать" оптимизацию. Могу просто свои куски "вывалить". Но. вообще, я сомневаюсь, что вы ужмете их раза в два.

Ну могли-бы и в 22 раза постфактум условие написать, однако вынужден напомнить, речь шла и идет о комплексном ужимании всего проекта с 2K+100 до 2K. И это тоже "однозначно".


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aesok
сообщение Dec 26 2008, 18:45
Сообщение #26


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(Огурцов @ Dec 26 2008, 21:28) *
Могу просто свои куски "вывалить". Но. вообще, я сомневаюсь, что вы ужмете их раза в два.


Я не понимаю Ваш гонор. Как видно из названия темы, это Вы не можете оптимизировать свою программу. Если нужна помощь то показавайте свой проект. Если Вы сомневаетесь что мы можем Вам помочь, то зачем чтото от нас требуете?

Анатолий.

Сообщение отредактировал aesok - Dec 26 2008, 18:48
Go to the top of the page
 
+Quote Post
singlskv
сообщение Dec 26 2008, 19:00
Сообщение #27


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Огурцов @ Dec 26 2008, 20:40) *
Вообще, меня не уполномачивали публиковать исходники, так что для текущей версии (+98 байт) это исключено. Но если гарантированно найдутся желающие с этой версией посоревноваться, что делать, я наверно напрягусь и соберу изначальный вариант (кажется байт 500-700 плюсом). В этом случае вопросов с авторскими правами не возникнет.
Ну публикуйте уже....
А там посмотрим... думаю что без попыток оптимизации другими будет даже проще...
развлечемся под новый год...
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Dec 26 2008, 19:27
Сообщение #28


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



http://www.atmel.com/dyn/resources/prod_documents/AVR231.zip


Я вот еще что подумал. Таблица векторов имеет опцию weak. Так может быть какой-нибудь подходящей по размеру функции задать определенный адрес, лежащий в области таблицы векторов, и последние, по идее, должны быть ей вытеснены. Может быть даже и предупреждения не будет. Как заставить gcc разместить функцию по определенному адресу ?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 26 2008, 19:29
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Огурцов @ Dec 26 2008, 22:12) *

Как принято нынче говорить "слив защитан", кстати, если "это" названо исходниками вызвыающими уважение, то, то я их частично лет пять назад портировал на ARM - обычное интернетовско-студенческое творчество. В собственно загрузчике ошибки в обработке ошибок видны невооруженным глазом, стиль жутковатый, собственно сам AES написан в лоб. Немного (не ставил целью особо зажиматься - быстренько правил бросающееся в глаза) подправил AES дешифратор. Могу его выложить. Остальные правка/чистка под AVR возможно где-то тоже сохранилась в backup.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Dec 26 2008, 19:57
Сообщение #30


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



Дада, сделайте из этого 1.5-1.7 килобайта, чтобы осталось байт триста для моих фич, и защитаем. Пока я вижу от вас только пустой треп, про разные ARM, в т.ч.
Вообще, я вас за язык не тянул, да и код мне ваш не нужен, но хотите меряться - меряйтесь, цифры для сравнения у меня есть.
Но в этой ветке, если вы не поняли, меня интересуют способы уменьшения размера кода (за что спасибо почти всем участникам обсуждения), а не работа по его уменьшению и не какие-то там мерялки.
Go to the top of the page
 
+Quote Post

6 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:57
Рейтинг@Mail.ru


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