|
|
  |
MSP-GCC 4. Кто-нибудь пробовал?, Случайно наткнулся:) |
|
|
|
Jun 17 2010, 09:25
|

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

|
Про упаковку всех структур: Код CFLAGS += -fpack-struct Про перетасовку, возможно, что-то из этого (некогда сейчас вникать): Код CFLAGS += -fno-reorder-blocks CFLAGS += -fno-reorder-blocks-and-partition CFLAGS += -fno-reorder-functions CFLAGS += -fno-toplevel-reorder Цитата(MrYuran @ Jun 17 2010, 12:45)  Вот кстати интересно: Кто структуры пакует - компилятор или линкер? Думается, что компилятор. Линкер лишь связывает.
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Jun 17 2010, 09:31
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(demiurg_spb @ Jun 17 2010, 13:25)  CFLAGS += -fpack-struct CFLAGS += -fno-reorder-blocks CFLAGS += -fno-reorder-blocks-and-partition Ура, заработало! Вотжеж, засады поджидают на каждом шагу на пути к культуре... А я уж было на плюсы намылился, чтобы, как АНТОХА, писать WatchDog->Clear(); Код Myport4.in.pin4 = 1; 5178: f2 d0 10 00 bis.b #16, &0x001c;#0x0010 517c: 1c 00 D:\ex_work\work\Программы\1003D_430_01_00\NEW_DOSER/main/../platform/watchdog_lo_level.h:31 Myport4.out.pin4 = 1; 517e: f2 d0 10 00 bis.b #16, &0x001d;#0x0010 5182: 1d 00 D:\ex_work\work\Программы\1003D_430_01_00\NEW_DOSER/main/../platform/watchdog_lo_level.h:32 Myport4.dir.pin4 = 1; 5184: f2 d0 10 00 bis.b #16, &0x001e;#0x0010 5188: 1e 00 D:\ex_work\work\Программы\1003D_430_01_00\NEW_DOSER/main/../platform/watchdog_lo_level.h:33 Myport4.sel.pin4 = 1; 518a: f2 d0 10 00 bis.b #16, &0x001f;#0x0010 518e: 1f 00
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jun 17 2010, 12:34
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(MrYuran @ Jun 17 2010, 12:31)  Ура, заработало! При этом все структуры стали упакованными. С вытекающими тормозами там, где не нужно. Давным-давно была бага с невыровненным доступом, я ее исправлял. В mspgcc3. Не было никаких проблем с доступом к портам. Скорее собака зарыта в описании структур. Как объявлен ioregister_t? Судя по пословному доступу в первом примере - он объявлен как двухбайтовый. И, соответственно, выровнен. С упаковкой при помощи __attribute__((packed)) тоже никаких проблем. У меня сейчас mspgcc не стоит, но если есть желание разобраться - могу поставить.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jun 17 2010, 15:49
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(Сергей Борщ @ Jun 17 2010, 16:34)  С упаковкой при помощи __attribute__((packed)) тоже никаких проблем. Вот и у меня не было, как говорится, пришла беда, откуда не ждали. Причём пробовал и старую версию (в мэйкфайле меняю MSPGCC_ROOT c С:\mspgcc4 на C:\mspgcc) - то же самое. Причём раньше-то точно работало. В нескольких проектах. После этого, правда, пару раз систему переставляли, может чего упустили... А сегодня, в разгар разборок, вообще винчестер сдох. Не выдержал... Видимо, таки придётся учиться собирать из исходников. на bzr, я так понял, готовых сборок не выкладывают
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jul 6 2010, 06:41
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Перекомпилил старый ИАРовский прожект, который раньше был меньше 20к. Результат - больше 30... манипуляции с ключами пока особого эффекта не дают (наверно, не знаю нужную комбинацию) В конце концов, полфлэша свободно, так что пока не жмёт. А вот если бы пришлось утаптывать в Fx47, то критично..
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Apr 5 2012, 06:16
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
В последнее время проект реанимирован, произошло (насколько я понял) слияние старой ветки GCC 3 с новаторской 4-й, обновили страничку на sf.net, прибрались порядочно. К сожалению, выкинули python-овские тулзы, и даже файл ihex2txt.exe, преобразующий ihex понятно во что. io.h теперь deprecated, равно как signal.h Цитата c:\mspgcc_new\bin\..\lib\gcc\msp430\4.5.3\..\..\..\..\msp430\include\signal.h|43|warning: #warning msp430-libc <signal.h> deprecated, using <legacymsp430.h>| c:\mspgcc_new\bin\..\lib\gcc\msp430\4.5.3\..\..\..\..\msp430\include\io.h|1|warning: #warning <io.h> is deprecated, please include <msp430.h>| Автоматом редирект на новые с предупреждением. Прогнал старый проект, выловил кучу фатальных ошибок, которые раньше пролетали даже без предупреждений. Результат: Код text data bss dec hex filename 27832 24 1040 28896 70e0 xxx.elf msp430-gcc (GCC) 4.5.3 Было: Код text data bss dec hex filename 29076 40 1016 30132 75b4 xxx.elf msp430-gcc (GCC) 3.2.3 Оптимизация -Os Минус кило двести даже при прочих равных. А ведь можно и потоньше настроить. В целом очень рад, что проект получил новое развитие. Хотя в перспективе можем от msp430 отказаться в пользу новых Cortex M0/M3
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Apr 5 2012, 07:40
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Попробовал дополнительные ключики Цитата CFLAGS += -combine CFLAGS += -fwhole-program : Код text data bss dec hex filename 26870 24 1031 27925 6d15 xxx.elf Ещё минус кило. Итого, минус 2200 с 29000. -7,59% А ведь один проект недавно совсем чуть-чуть в 60к не влез, пришлось ИАР эксплуатировать, в порядке исключения. А теперь бы не пришлось.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Apr 5 2012, 08:21
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(AHTOXA @ Apr 5 2012, 11:59)  Это про какой mspgcc? Про просто mspgcc или про mspgcc4? Это про просто mspgcc, который теперь 4.5.3 и к тому же mspgcc 2012-03-31Напомню, крайний официальный релиз 3-го на sf.net был где-то в районе 301208 Цитата Uniarch continued the work of mspgcc4, returning those contributions to the mspgcc project and generalizing the infrastructure to support all 300+ variants of the MSP430 microcontroller. The name "uniarch" is no longer used: the project is again simply "mspgcc". PS: а я путем коммента #CFLAGS += -fno-reorder-blocks #CFLAGS += -fno-reorder-blocks-and-partition ещё 128 байт отжал  Итого, -8% ровно. Я бы на месте TI премию выписал всем новым (и старым) энтузиастам, или хотя бы радиочасики подарил, на память
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Apr 5 2012, 13:02
|

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

|
Цитата(MrYuran @ Apr 5 2012, 14:36)  Там что-то все про баги, а я вот старый проект просто тупо собрал, и все работает как надо. Глюки там были при -ffunction-sections -fdata-sections + -gc-sections. Остальное нормуль вроде. Но я пока на старой версии, не хочу экспериментировать. Цитата Попробовали крайнюю версию 4.6.2 - опять -combine отломали... Да это ещё нигде толком не работает, имхо. По крайней мере, закладываться на работоспособность этой фичи я бы не стал ещё год как минимум.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Apr 6 2012, 09:44
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(AHTOXA @ Apr 5 2012, 17:02)  Глюки там были при -ffunction-sections -fdata-sections + -gc-sections. Остальное нормуль вроде. Но я пока на старой версии, не хочу экспериментировать. Да это ещё нигде толком не работает, имхо. По крайней мере, закладываться на работоспособность этой фичи я бы не стал ещё год как минимум. Глюков с секциями не обнаружено. Комбайновая фича конечно необязательная, но иногда очень полезная, когда упихиваешь в прошивку последнюю сотню-другую байт. И тут вдруг пару кБ нахаляву...
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
  |
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|