Проект - станок с гуи, поскольку опыта в серьезных разработках нет, то в процессе поиска остановился на ПЛИС. Два варианта: Nios II + eCos + Nano X Window System и Leon 3 + eCos (RTEMS) + NXWS. Ни с чем вышеперечисленным ни разу не встречался ранее.
Приобрели дешевую платку TrexC1. В нее хорошо влезал Nios II 5.1 в "s" конфигурации с 4Кб кеша команд JTAG Debug Module lvl 1, контроллер SDRAM, CF, Flash, jtag_uart, uart, sysid, epcs_controller, timer. В общей сложности выходило менее 4500 ячеек. На частоте 75 MHz проц выдавал порядка 15 DMIPS.
Далее возникли проблемы 1) с лицензией 2) с созданием собственного компонента для SOPC Builder -
стандартный мастер компонент создавал, однако в последствие квартус вылетал при фиттинге. Поэтому вернулся к леону.
Основной недостаток - невозможность создания минимальной конфигурации, подобной ниосу.
Сейчас: Leon 3 (-mmu, -dcache, -icache) + dsu + ahbctrl + ahbuart + mctrl со включенным sdctrl (ESA) + apbctrl + apbuart + irqmp.
Все это собралось (без оптимизаций):
Код
Device : EP1C6Q240C8
Timing Models : Final
Total logic elements : 5,106 / 5,980 ( 85 % )
Total pins : 78 / 185 ( 42 % )
Total virtual pins : 0
Total memory bits : 16,384 / 92,160 ( 18 % )
Total PLLs : 1 / 2 ( 50 % )
Частота 50 MHz. В железе не заработала (хотелось побыстрее поковырять): при подключении по uart grmon не может установить соединение. Сейчас проверяю в modelsim - подозреваю ошибку в mctrl при работе с флешкой с шиной 8 бит - выполняется только одно чтение, вместо 4х (32 бита).
Общее впечатление следующее:
1) Документация скудная - есть только описание базовых компонентов grlib и их параметров, различные нюансы конфигурирования старательно опущены.
2) Красивая конфигурация при помощи xconfig, да и даже просто config, на деле мне не пригодилась, поскольку все эти if CFG_SOMEDIFNE = 1 generate.... только загромождают код, в результате, из-за небольшой ошибки в конфиге получаем трудоновылавливаемые ошибки при сборке.
3) Конфигурация системы как в SOPC Builder отсутствует - если в случае с ниосом систему за вас строит билдер, назначая все адреса устройств на шине, осуществляя подключение и отключение, то здесь этого нет.
4) Поскольку Leon - SPARC v8 процессор, то можно использовать все инструменты, доступные для спарка (gcc etc). В частности, одна из причин, по которой перестал пользовать ниосом - это странные ошибки при работе компилятора nios2-elf-gcc (при сборке модуля для ucLinux, он прописывал в поле архитектуры ELF не ALTERA_NIOSII, а странное значение 0xFF).
5) Количество открытых корок для AMBA очень мало (если сравнивать с Wishbone, конечно).
P.S.: Видел сравнение Leon 2 + Nios II (не помню версию), когда ниос был маленький (минимальные конфигурации обоих систем), леон выигрывал. В полной конфигурации они были наравне. Для Leon 3 такого сравнения не встречал.