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

 
 
9 страниц V  « < 5 6 7 8 9 >  
Reply to this topicStart new topic
> WinAVR-20100110, Пишем отзывы сюда
Genadi Zawidowsk...
сообщение Aug 9 2012, 07:53
Сообщение #91


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

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



Цитата(demiurg_spb @ Aug 9 2012, 09:10) *
... наличия гораздо более удобного механизма с ключевым словом __flash.


Отлично!

1) указатель на данные во flash, расположенный во flash?
2) указатель на данные в RAM, расположенный во flash?
3) указатель на данные во flash, расположенный в RAM?

Как выглядят описания?


ps: что-то применение этого ключевого слова приводит к классическому
../tc1.c:294:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'const'

Сообщение отредактировал Genadi Zawidowski - Aug 9 2012, 07:57
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Aug 9 2012, 08:28
Сообщение #92


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

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



думаю что где-то так
Код
#define flash const __flash
или
typedef const __flash flash;

1) flash void* flash
2) void* flash
3) flash void*


http://gcc.gnu.org/onlinedocs/gcc/Named-Address-Spaces.html
+ гляньте доку на IAR, как это не странно звучит, но там вы найдёте ответы на все ваши 3 вопроса.

Цитата(Genadi Zawidowski @ Aug 9 2012, 11:53) *
ps: что-то применение этого ключевого слова приводит к классическому
../tc1.c:294:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'const'

CSTANDARD = -std=gnu99


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Aug 9 2012, 08:39
Сообщение #93


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

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



Цитата(demiurg_spb @ Aug 9 2012, 12:28) *
CSTANDARD = -std=gnu99


Стоит (ключик в командной строке компилятора, если я правильно понял намёк).

В какой версии avr gnu toolchain это (ключевое слово __flash) работает?

Цитата
найдёте ответы на все ваши 3 вопроса

То что это по применению похоже на квалификаторы, я догадался. Я не пойму, куда это поставить, чтобы работало. У меня не получается.

Сообщение отредактировал Genadi Zawidowski - Aug 9 2012, 08:42
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Aug 9 2012, 08:45
Сообщение #94


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

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



Цитата(Genadi Zawidowski @ Aug 9 2012, 12:39) *
Стоит (ключик в командной строке компилятора, если я правильно понял намёк).
хорошо
Цитата
В какой версии avr gnu toolchain это (ключевое слово __flash) работает?
начиная с 4.7.0, правда изначально его называли __pgm, поэтому для первых сборок 4.7.0 нужно ещё и это:
#define __flash __pgm


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Aug 9 2012, 09:04
Сообщение #95


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

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



Использую вот отсюда
http://electronix.ru/forum/index.php?showt...t&p=1082499
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Aug 9 2012, 09:18
Сообщение #96


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

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



Цитата(Genadi Zawidowski @ Aug 9 2012, 13:04) *
Использую вот отсюда
http://electronix.ru/forum/index.php?showt...t&p=1082499

И я тоже:
Код
avr-gcc -v

Using built-in specs.
COLLECT_GCC=c:\gcc\avr-gcc\bin\avr-gcc.EXE
COLLECT_LTO_WRAPPER=c:/gcc/avr-gcc/bin/../libexec/gcc/avr/4.7.1/lto-wrapper.exe
Target: avr
Configured with: ../../gcc.gnu.org/gcc-4_7-branch/configure --target=avr --prefix=/local/gnu/install/gcc-4.7-mingw32 --host=i386-mingw32 --build=i686-linux-gnu --enable-languages=c,c++ --disable-nls --disable-shared --with-dwarf2 : (reconfigured) ../../gcc.gnu.org/gcc-4_7-branch/configure --target=avr --prefix=/local/gnu/install/gcc-4.7-mingw32 --host=i386-mingw32 --build=i686-linux-gnu --enable-languages=c,c++ --disable-nls --disable-shared --with-dwarf2
Thread model: single
gcc version 4.7.1 20120606 (prerelease) (GCC)

HINT: в этой сборке avr-size не пропатченый поэтому возмите его из последнего WinAVR или из атмеловской сборки.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Aug 9 2012, 19:25
Сообщение #97


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

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



Это что-то!
На 32-х килобайтном проекте получил почти пять килобайт выигрыша по объёму FLASH - это здорово (-Os)!
Просто перекомпилировал.

Попробовал с квалификатором __flash поиграться - странно, присвоение указателей на объекты с различием в этом квалификаторе не вызывает даже предупреждения... грустно. На "ручном управлении" работает, но это получается весьма опасный текст...

Не удаётся заставить работать из-под AvrStudio 4.19, только запуская make в каталоге проекта.
upd: заставил, только отключив использование AVR TOOLCHAIN и выбрав make из yagarto tools
Лучше иметь установленным atmel gnu tools поновее - gcc plugin поновее полезен.

Сообщение отредактировал Genadi Zawidowski - Aug 10 2012, 06:51
Go to the top of the page
 
+Quote Post
halfdoom
сообщение Aug 10 2012, 04:45
Сообщение #98


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

Группа: Свой
Сообщений: 1 003
Регистрация: 20-01-05
Пользователь №: 2 072



Цитата(demiurg_spb @ Aug 9 2012, 08:10) *
Напрасно расстраиваетесь, если нужна совместимость со старыми дедовскими методами нужно объявить глобально или до включения pgmspace.h

Да я не расстраиваюсь, наоборот, всячески приветствую появление __flash, учитывая то, что предлагая включить подобное расширение лет 8 назад, услышал много всякого в ответ.

А в режиме совместимости с первого раза не собралось, поэтому и "расстроился".
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Aug 10 2012, 07:20
Сообщение #99


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

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



Нашёл ещё одну сборку - уже с инсталлятором -
http://www.makehackvoid.com/node/578/release

Цитата
C:\Program Files\MHV AVR Tools\bin>avr-gcc -v
Using built-in specs.
COLLECT_GCC=C:\Program Files\MHV AVR Tools\bin\avr-gcc.EXE
COLLECT_LTO_WRAPPER=c:/program files/mhv avr tools/bin/../libexec/gcc/avr/4.7.1/lto-wrapper.exe
Target: avr
Configured with: ../gcc-4.7.1/configure --prefix=/c/mhvavrtools/mhvavrtools/mhvavrtools --host=i686-pc-mingw32 --target=avr --enable
-languages=c,c++ --with-dwarf2 -enable-win32-registry=MHV-AVR-Tools --enable-lto --with-gmp=/c/mhvavrtools/mhvavrtools/build/bin --with-mpfr=/c/mhvavrtools/mhvavrtools/build/bin --with-mpc=/c/mhvavrtools/mhvavrtools/build/bin --disable-libssp
Thread model: single
gcc version 4.7.1 (GCC)
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Aug 10 2012, 07:24
Сообщение #100


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

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



Я её тоже находил, но и также находил инфу что с ней что-то не так, возможно уже пофиксили.
В ней binutils какой-то экспериментальный
Код
Binutils 2.22.52.20120702 (development snapshot)
и вот с ним что-то не совсем чисто.
Так что я бы её не советовал использовать в боевых условиях.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Aug 10 2012, 07:40
Сообщение #101


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

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



Цитата(demiurg_spb @ Aug 10 2012, 11:24) *
Я её тоже находил, но и также находил инфу что с ней что-то не так, возможно уже пофиксили.
В ней binutils какой-то экспериментальный
Код
Binutils 2.22.52.20120702 (development snapshot)
и вот с ним что-то не совсем чисто.
Так что я бы её не советовал использовать в боевых условиях.


Эта сборка чуть похуже с объёмом FLASH обходится (на 32 кило - 300 байт проигрыша).
Она поновее (компилятор не пререлиз)...
Интересно, что не так... Вот у halfdoom проект не собрался в режиме совместимости - у меня собирался нормально...

Перевёл проект на использование __flash вместо pgm_read_xxx - в основном приводило к маленьким уменьшениям кода (на 4..10 байт на одну правку, если оптимизатор не мог использовать это. Если мог - до сотни байт). Иногда к увеличению на десяток байт. В основном уменьшает.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Aug 10 2012, 08:39
Сообщение #102


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

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



Не знаю... У меня все проекты собираются.
Вы эти флаги пробовали применять? С ними ещё злее оптимизирует, правда мало шансов, что с -flto соберётся...
Код
#CFLAGS += -flto
#CFLAGS += -mbranch-cost=
CFLAGS += -fno-tree-switch-conversion
CFLAGS += -mstrict-X
CFLAGS += -maccumulate-args



--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Aug 10 2012, 09:10
Сообщение #103


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

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



Цитата
Не знаю... У меня все проекты собираются.


Так и уменя тоже - собираются. Это у halfdoom странная проблема - я к тому, что на developer release могли ругаться из-за каких то не тех проблем.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Aug 12 2012, 07:01
Сообщение #104


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

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



Так, все-таки, кто знает, как можно получить предупреждение компилятора в таких местах:

Код
const __flash char * pcf1;
const char * pc2;

void test1(void)
{
    pcf1 = pc2;
}

void test2(void)
{
    pc2 = pcf1;
}


Сообщение отредактировал Genadi Zawidowski - Aug 12 2012, 07:02
Go to the top of the page
 
+Quote Post
halfdoom
сообщение Aug 13 2012, 09:59
Сообщение #105


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

Группа: Свой
Сообщений: 1 003
Регистрация: 20-01-05
Пользователь №: 2 072



В общем, собрал четыре проекта: самый маленький ~2КБ, на нем выигрыш составил 1.2%, самый большой - 29КБ, выигрыш 4.7%. Остальные где-то посередине. Оптимизация, в основном, коснулась избыточных загрузок регистров, заметно лучше используются X+ команды, в терминальных функциях теперь задействуется Y регистр.
Go to the top of the page
 
+Quote Post

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

 


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


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