Цитата(R6L-025 @ Oct 28 2016, 16:11)

Кто нибудь сталкивался с подобным поведением? Можете скинуть рабочий .config с произвольной версией?
Я использую ядро 4.1.22-ltsi+ отсюда:
https://github.com/altera-opensource/linux-socfpga.gitНажмите для просмотра прикрепленного файлаСобирал все (ядро и модуль) кросс-компилятором arm-none-eabi-gcc версии 4.8.4 на Debian 8.1.
По поводу fpga manager не могу ничего сказать, я его не использую, тк мой проект использует DMA через fpga2sdram и поэтому битстрим загружается бутлоадером u-boot.
С ethernet проблем не обнаружено.
Что касается SPI. Я "завернул" сигналы SPI0 master в FPGA, чтоб потом вывести их на разъем DE0-Nanao. Такой метод дополнительно позволяет получить контроль над 4 выводами SS.
Я не использовал драйверов SPI из ядра, а написал свой модуль - так мне удобней. Сейчас у меня через SPI управляется 3 устройства - 2 DAC и DDS. DAC получает 16-битные команды, а DDS 32-битные.
Вот пример кода для 32 бит
CODE
static void __iomem *SPI0;
// ---8<---- from module init
request_mem_region(SPIM0_ADDR, SPIM0_LEN, DRV_NAME);
SPI0 = ioremap(SPIM0_ADDR, SPIM0_LEN);
// ---8<----
// initialize SPI0
iowrite32(0, SPI0+SPIM_SPIENR_OFF); // Disable SPI0
iowrite32(0x1CF, SPI0+SPIM_CTRLR0_OFF); // TxOnly, scpol=1 scph=1 length=16 bit
iowrite32(0, SPI0+SPIM_CTRLR1_OFF);
iowrite32(0, SPI0+SPIM_SER_OFF); // Disable All SS
iowrite32(100, SPI0+SPIM_BAUDR_OFF); // set baudrate
iowrite32(1, SPI0+SPIM_SPIENR_OFF); // Enable SPI0
// sending data
iowrite16((value >> 16) & 0xFFFF, SPI0+SPIM_DR_OFF);
iowrite16(value & 0xFFFF, SPI0+SPIM_DR_OFF);
iowrite32(2, SPI0+SPIM_SER_OFF); // Enable SS1
udelay(5);
while(ioread32(SPI0+SPIM_SR_OFF) & 1); //wait for busy==0
iowrite32(0, SPI0+SPIM_SER_OFF); // Disable All SS
Используемые константы.
CODE
// SPIMx registers
#define SPIM0_ADDR 0xFFF00000
#define SPIM0_LEN 0x1000
#define SPIM1_ADDR 0xFFF01000
#define SPIM1_LEN 0x1000
//
#define SPIM_CTRLR0_OFF 0x00
#define SPIM_CTRLR1_OFF 0x04
#define SPIM_SPIENR_OFF 0x08
#define SPIM_MWCR_OFF 0x0C
#define SPIM_SER_OFF 0x10
#define SPIM_BAUDR_OFF 0x14
#define SPIM_TXFTLR_OFF 0x18
#define SPIM_RXFTLR_OFF 0x1C
#define SPIM_TXFLR_OFF 0x20
#define SPIM_RXFLR_OFF 0x24
#define SPIM_SR_OFF 0x28
#define SPIM_IMR_OFF 0x2C
#define SPIM_ISR_OFF 0x30
#define SPIM_RISR_OFF 0x34
#define SPIM_TXOICR_OFF 0x38
#define SPIM_RXOICR_OFF 0x3C
#define SPIM_RXUICR_OFF 0x40
#define SPIM_ICR_OFF 0x48
#define SPIM_DMACR_OFF 0x4C
#define SPIM_DMATDLR_OFF 0x50
#define SPIM_DMARDLR_OFF 0x54
#define SPIM_DR_OFF 0x60
Подробно о регистрах и режимах написано в документе Cyclone V HPS TRM.
Если есть какие-либр вопросы - пишите.
Важный момент: при любом изменении в настройках HPS (которые вы делаете в Qsys) нужно пересобирать preloader! Те запускать bsp-editor, потом make. Иначе перефирия может работать некорректно или совсем не работать.