понаблюдал пациента изнутри, результаты меня, мягко говоря озадачили. как наблюдал: взял систему с ниос, on-chip, cfi, добавил сигнал-тап со всеми сигналами флешки. в отладчике запускал программу, которая пытается стереть 0 сектор. как было выше отмечено, при добавлении к instruction cache опции burst, flash-programmer перестает работать, долго тупит(ждет таймаута, как выяснилось).
вот так выполняется команда Read Device Identifier(flash Intel P30)
Код
flash->write_native((alt_u8*)flash->dev.base_addr + block_offset, 0x90);
правильная запись

неправильная запись

соответственно, чтение результата(он должен сказать, залочен ли сектор)
Код
locked = IORD_8DIRECT(flash->dev.base_addr, block_offset + 4);
"правильно"

"неправильно"

далее, разлочка сектора(случайно, даже "неправильный" вариант иногда показывает, что сектор заблокирован)
Код
flash->write_native((alt_u8*)flash->dev.base_addr + block_offset, 0x60);
flash->write_native((alt_u8*)flash->dev.base_addr + block_offset, 0xD0);
привожу только 1 команду, вторая - аналогично:
правильная запись

неправильная запись

далее читается статус, в "неправильном" варианте читается чушь, долго висит таймаут и т.д.
теперь мысли по поводу бага: я считаю, что виноват CFI. по поводу опции burst (упреждающее чтение при промахе в кэше) в манах пишется, что ее стоит включать, если используется dram, иначе - выключать. тогда, если в проекте есть dram+flash, эту опцию включать не нужно(а практика показывает, что и
нельзя), странно, имхо. ведь та же P30 умеет чтение пачками разного размера, казалось бы, почему нет? проведенные выше тесты показывают, что при включении опции burst, контроллер CFI начинает
писать чушь по левым адресам, хотя как я понимаю, эта опция должна влиять только на чтение. неправильное же чтение из flash(и все остальное поведение), есть всего лишь следствие. м.б. стоит пободаться с саппортом альтеры, но я думаю, они скажут "снимите галочку" и пошлют. хотя и в "правильном" варианте при чтении идут паразитные транзакции, да и адресная шина зачем-то болтается как попало...