Доброго времени, господа.
Вопрос следующий: работает ли / пользует ли кто MTD на onboard AT45DB321 ?
Мысль такова - изменил корневую ОС через консоль или через ssh - записал изменения в флешку, т.е. меняем rootfs прямо на девайсе без участия u-boot и без перезагрузки..., вроде MTD позволяет это делать...
Ладно... сам спросил, сам отвечу... время не прошло зря...
Имеем:
Рабочий драйвер MTD для dataflash AT45DB321D, произвольное деление места на партиции, чтение и запись чипа через простое копирование... т.е. для перезаписи ядра, ramdisk , uboot и bootstrap - достаточно дать команду, например, cp в загруженном линукс.
Фрагмент загрузки ядра:
Разделы MTD
Линки в /dev
Смена ядра, например, так:
Таким же образом остальные компоненты в любом направлении... по ssh, telnet с помощью wget... все что позволит фантазия, откуда угодно (пока загружается система...)
Также есть спец-утилиты для работы с флеш из пакета jffs2/mtd utilities (входит в buildroot)...
flash_erase
flash_eraseall
flash_lock
flash_unlock
flashcp
и т.д. и т.п.
diff для файла:
<сырец вашего ядра>/arch/arm/mach-at91/board-sam9260ek.c
Адреса и размеры разделов ставьте СВОИ... у меня дефолтовые от buildroot... для сборки выставить нужные опции в /drivers/MTD, например, через menuconfig...
Интересный материал. Думаю пригодится, особенно актуально для меня перезапись bootsrap и uboot без самбы. Имхо вот это
вообще лишнее кроме .platform_data = &dataflash_data
, или все же в ядре нужно отключать модуль CONFIG_MTD_AT91_DATAFLASH_CARD ? Как показала практика на высокие скорости с spi не стоит рассчитывать, а первый #if !defined(CONFIG_MMC_AT91) автоматом проигнорирует следующий за ним код у большинства (тех кто использует mci на плате и mmc/sd :) Вообще интересно было бы узнать - может уже есть более цивилизованный способ сообщять ядру о разметке партиций на mtd - устройставах ?
Прошу прощения - я был похоже не прав и патчить все равно придется - diff не очень привычного вида был :) Без этого ядро не увидит автоматом dataflash на spi0.0 ...
На этом кстати есть небольшие грабли для тех кто пользуется авторскими версиями bootsrap & etc - адреса в dataflash не выровнены на границе страниц (528 байт) поэтому разделы автоматом переводятся в режим только чтения. В общем информация о разделах вполне нормально передается через командную строку, параметр mtdparts=.