Цитата(doom13 @ Jun 27 2018, 11:56)

P.S. Плюс для master_write_32 оффсет будет не 3, а 12 относительно базового адреса.
Да, так и делаю. Смещение 12.
Короче, разобрался. Спасибо всем кто пытался помочь.
Пришлось сделать простую систему с процессором NIOS. Дело в следующем:
в функции
Код
int alt_epcq_controller2_erase_block(alt_flash_dev *flash_info, int block_offset);
есть ошибка. Не знаю во всех версия Quartus или нет, у меня 17.0
Перед тем как стирать сектор, т.е. перед тем как записывать в регистр FLASH_MEM_OP[2:0] значение 3'b010 необходимо записать команду для разрешения записи, т.е. FLASH_MEM_OP[2:0] = 3'b100
Например, если нужно стереть сектор с начальным адресом 0x10000 (это первый сектор, не нулевой) сначала записываем FLASH_MEM_OP = 0x104, затем FLASH_MEM_OP = 0x102.
Дополнительный код для в функции int alt_epcq_controller2_erase_block в файле altera_epcq_controller2.c выглидит так:
Код
/* calculate current sector/block number */
sector_number = (block_offset/(epcq_flash_info->sector_size));
/* sector value should occupy bits 23:8 */
mem_op_value = (sector_number << 8) & ALTERA_EPCQ_CONTROLLER2_MEM_OP_SECTOR_VALUE_MASK;
/* write enable command */
mem_op_value |= 0x04;
/* write sector erase command to EPCQ_MEM_OP register to erase sector "sector_number" */
IOWR_ALTERA_EPCQ_CONTROLLER2_MEM_OP(epcq_flash_info->csr_base, mem_op_value);
То же самое касается и доступа к EPCQ32 с помощью любого другого мастера.