Originally Posted by
Oleg
Поглядел. Ну до этого ещё подумал. 16мб найти врядли получится.
Тогда рассчитывать на это не буду.
P.S. Попытался отыскать нужную память - действительно не бывает 128Mb и больше в корпусе tsop48.
Originally Posted by
Oleg
Что касается разбиения на 2: я не знаю, как отнесётся линукс, если обнаружит меньшую флешку, чем она должна быть. Там ведь авто-детект есть. Как бы не убил бы он себе загрузчик, при попытке записи в верхнюю половину, при её отсутствии... Что касается отладки - я действительно использую USB для этого. Кроме ядра, конечно.
Действительно, хорошо что вы это сказали!
Решил посмотреть, как инициализируется mtd в ядре. И, кажется, я знаю, что нужно поправить, чтобы разделы mtd не залезали выше 4МБ. (Этого ведь будет достаточно??) Но это надо проверить. Хотя есть ощущение, что и без моих исправлений все будет как надо. Там довольно серьезная проверка устройства, хотя я в ней не смог до конца разобраться, запутался.
На самом деле в коде уже практически все есть. Для проверки должно быть достаточно включить в ядро такой, например, патч:
Code:
--- linux.orig/drivers/mtd/maps/bcm947xx-flash.c 2007-04-07 18:29:48.000000000 +0400
+++ linux/drivers/mtd/maps/bcm947xx-flash.c 2007-04-07 18:34:31.000000000 +0400
@@ -188,7 +188,12 @@
/* Allow size override for testing */
size = flash ? : bcm947xx_mtd->size;
- printk(KERN_NOTICE "Flash device: 0x%x at 0x%x\n", size, window_addr);
+ printk(KERN_NOTICE "Flash device (calculated parameters): 0x%x at 0x%x\n", size, window_addr);
+
+ /* Override it, really */
+ size = 0x400000;
+
+ printk(KERN_NOTICE "Flash device (overriden for testing): 0x%x at 0x%x\n", size, window_addr);
#ifdef CONFIG_MTD_PARTITIONS
parts = init_mtd_partitions(bcm947xx_mtd, size);
Достаточно ли ограничить разделы mtd, чтобы ядро не пыталось писать куда не надо? (Конечно, при условии, что прошивка влезет, но с этим, вроде все ок...)