Излечение Quartus II Web Edition v12.0

Делюсь. Наверно, для кого-то боян, но кому-то будет полезно.
Скачанный с сайта altera Quartus несколько ограничен в своих возможностях. Применяем таблетку от очень старой версии (см. прикрепленный файл) — лицензию хавает, но — не компилирует. Применяем трепанацию черепа редактирование библиотеки libsys_cpt.so, преддоженное опять же давным давно для старых версий — все OK.
Редактирование заключается в том, чтобы найти в библиотеке libsys_cpt.so адрес функции l_checkout и начиная с этого адреса заменить три байта на следующие: 33 CO C3
Я нахожу этот адрес просто нажав F3 в midnight commander на файле libsys_cpt.so, но можно и совсем по умному:
запскаем gdb
gdb> file libsys_cpt.so
gdb> info function l_checkout
записываем адрес этой функции

Затем открываем файл libsys_cpt.so в hex-редакторе(например bless) и заменяем три байта начиная с этого адреса на 33 CO C3
Все. Обратите внимание, в редакторе режим замены, а не вставки!

Заметки на память (wildcard in makefile,mac-address)

По просторам инета гуляют вот такие строчки в makefile:

# Компиляция
%.o: %.c
        $(CC) $(CFLAGS) -MD -c $< -o $@
# Сгенерированные gcc зависимости
#-------------------------------------------------------------------------------
include $(wildcard *.d)

Якобы ключ -MD заставляет make генерировать файлы *.d, в которых расписаны зависимости, ну что-то типа:

main.o: main.c  main.h

а include, естественно вставляет эти строки в makefile, заставляя утилиту make перекомпилировать main.c даже если изменен main.h
wildcard нужен чтобы не возникало ошибки, в случае отсутствия *.d файлов (например, первая компиляция вызовет ошибку
make: *** Нет правила для сборки цели `*.d'. Останов.
)
Все это правильно, но с одним маленьким уточнением: так будет, только если все файлы (и *.c, и *.h, и *.d, и makefile) лежат в одной директории. Если все разложено по src,inc etc… то ваши надежды, что make отследит зависимости, не сбудутся. Тогда нужно писать как-то так:

include $(wildcard inc/*.d)
include $(wildcard src/*.d)

Мелочь, конечно, но если не отследить, можно долго бодаться, не понимая, почему вы меняете код, а ничего не происходит.
/////////////////////////////////////////////////////
Еще замечание на совершенно другую тему. Вникая в lwip, узнал что mac-address производитель задает не как-попало. В принципе, об это написано даже в википедии здесь
Конкретизирую, чтобы не забыть и не запутаться в старших-младших битах:
недопустимы адреса типа 01:xx:xx:xx:xx:xx 03:xx:xx:xx:xx:xx 07:xx:xx:xx:xx:xx и т.д. — то есть те в которых крайний (старший) бит равен 1, — это бродкаст адрес. Второй скраю бит тоже не просто так — если 1, это адрес установленый сисадмином, а не производителем (например 02:xx:xx:xx:xx:xx — установлен «вручную»)
Кстати, прочесть mac-address универсальный идентификатор stm32:

unsigned long *Unique = (unsigned long *)0x1FFFF7E8;
printf("%08X %08X %08X\n", Unique[0], Unique[1], Unique[2]);

Адрес смотрим свой, в reference manual, в разделе Unique device ID register (96 bits).

Применение printf в stm32f4

PRE SCRIPT:
Те, для кого английский не проблема, могут прочесть статью здесь
Там все по теме принтф гораздо лучше чем у меня. Жаль, я поздно ее обнаружил.Рекомендую!

Так долго боролся с printf на stm32f4 discovery, что решил оставить заметку на память. От печки начинать не буду — предполагается что среда разработки уже функционирует.
Итак, у меня имеется плата stm32f4 discovery, воткнутая в usb, Archlinux с пакетами stlink-git,gcc-arm-none-eabi. Библиотека STM32F4xx_DSP_StdPeriph_Lib_V1.0.1 скачана, makefile взят здесь же — we.easyelectronics.ru/storm_ua/esche-odin-shablon-proekta-pod-stm32-na-gcc.html(спасибо коллеге storm_ua) и слегка подкорректирован. Для пробы написан helloword — лампочки мигают. Дальше собственно борьба с printf. Просто добавить include <stdio.h> и sprintf ( о printf пока не говорим — куда выводить? но sprintf вроде должен работать) не получилось. Масса сообщений о ненайденных функциях _sbrk_r, _exit и тому подобных. Добавляем, как рекомендуется файл syscalls.c. В нем должны быть прописаны реализации системных функций применительно к конкретному процессору. Либо просто пустые заглушки к этим фукциям.


Читать дальше