ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
26 июля
1409983 Топик полностью
pavel2000 (03.03.2024 18:29, просмотров: 125) ответил Visitor на Так в софте обработчик события найти нужно и в ком порт для дальнейшей трассировки отправить. Если осцилл цифровой, многое не увидеть можно.
Я смотрел код функции do_erase_oneblock() в cfi_cmdset_0001.c в исходнике дистрибутивного ядра той же версии, что и ПО донора. 

Там такая последовательность:


/* Clear the status register first */

map_write(map, CMD(0x50), adr);

/* Now erase */

map_write(map, CMD(0x20), adr); --- соответствует даташиту, команда Sector Erase Setup

map_write(map, CMD(0xD0), adr); --- соответствует даташиту, команда Sector Erase Confirm


-- затем, как я понимаю, оно пытается ждать нужное время

ret = INVAL_CACHE_AND_WAIT(map, chip, adr, adr, len, chip->erase_time);

а затем код проверяет регистр статуса на предмет ошибок,


map_write(map, CMD(0x70), adr);

status = map_read(map, adr);

где и выдает сообщение:

printk(KERN_ERR "%s: block erase error: (bad VPP)\n", map->name);

https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux/+/refs/tags/v2.6.26/drivers/mtd/chips/cfi_cmdset_0001.c#1852


Однако загружаю я готовую бинарную сборку "от производителя платы".
Нет гарантии, что она 100% совпадает с стоковым ядром 2.6, но думаю (надеюсь), что какие-то существенные изменения там маловероятны.

Ваша гипотеза о причинах проблемы какова?