файловая система rootfs.jffs2 не поместится в mtd3

Каталог подготовки полезен для заголовков, и середина инструментов шага должна была создать заключительное изображение, но не нужный в rootfs, это также используется для созданных разделенных библиотек и исполняемых файлов.

Копия от подготовки до целевого каталога $(TARGET_DIRECTORY) обычно делается в цели rootfs конфигурация Вы выбранный (например: cramfs, squashfs, и т.д.), но часто список файлов, которые будут включены в rootfs, находится в Вашей цели конфигурации платформы (например: универсальный, платформа - что-то) в файле простого текста.

3
25.04.2014, 03:36
1 ответ
[116127] Во-первых, Я не думаю, что переменная окружения [116621]mtdparts[116622] передает какую-либо значимую информацию о том, каковы реальные размеры разделов. Предполагается, что [116623]mtdparts[116624] является загрузочным параметром ядра, а не переменной окружения. Возможно, PetaLinux помещает эти значения в окружение во время загрузки. Однако, даже в этом случае оно оказывается в неправильном формате. Для просмотра параметров загрузки ядра можно сделать [116625]cat /proc/cmdline[116626].[12146]Для выяснения размеров разделов, которые пытается создать ядро, можно посмотреть в разделе [116627]/proc/mtd[116628] согласно другому вопросу. Для того, чтобы узнать размер создаваемого на самом деле блочного устройства (в байтах), можно сделать [116629]blockdev --getsize64 /dev/mtd3[116630] (нужны права root). Теперь, предполагая, что размер раздела слишком мал, вы захотите увеличить размер раздела (вот что задает другой вопрос!). Указание параметра [116631]mtdparts[116632] во время загрузки является правильным способом сделать это. Из [116633]drivers/mtd/cmdlinepart.c[116634] в исходных кодах ядра (обратите внимание, что это немного больше информации, чем почти идентичный фрагмент из [116635]drivers/mtd/Kconfig[116636], который использовался ранее), это правильная спецификация формата:[12148]Что именно подразумевается под [116637]стандартным linux memsize[116638] непонятно. [116639]Документация/параметры ядра.txt[116640] дают следующий параграф:[12149]Это ожидаемое использование заглавных букв, но не упоминается, указана ли в примере строчная [116641]k[116642] та же или другая мощность, что и [116643]K[116644] (лучше проигнорировать это и использовать заглавные буквы по внешнему виду вещей). [12150]Из вашего вопроса часть [116645]mtdparts=mtdparts=[116646] кажется неправильной. Обычно для переменной окружения имя переменной вообще не является частью значения переменной. Также [116647]0[116648] не кажется правильным [116649]mtd-id[116650].[12151]Все остальное для заданной вами [116651]mtdparts[116652] кажется правильным. Размер раздела следует тщательно выбирать, чтобы он совпадал с размером стираемых блоков, но это кажется так, учитывая размер блока стирания 64КиБ в [116653]/proc/mtd[116654] для другого вопроса.[12152]Поиск правильного [116655]mtd-id[12153]Похоже, что на работающей системе не существует способа определить это. Различная информация об устройствах mtd находится в разделе [116657]/sys/class/mtd[116658], на данный момент эта информация недоступна. Команда [116659]mtdinfo[116660] вроде бы ничего не делает, кроме чтения и форматирования этой информации, так что это тоже не очень полезно[12154] Однако, учитывая используемый драйвер, это можно узнать, посмотрев на исходные тексты ядра. Чтобы получить это, вы можете посмотреть последнее стабильное дерево исходных текстов с помощью:[12155]Или вы можете предпочесть использовать код вашего дистрибутива для используемой версии кернела. Обратите внимание, что на самом устройстве, скорее всего, не хватит места для загрузки ~1.4 Гб. Из корня дерева исходных текстов следующая команда показывает хорошую порцию мест, где установлено значение [116661]mtd->name[116662] (заметьте, что код не обязательно должен использовать имя [116663]mtd[116664] для структуры, но обычно будет):[12156]В большинстве случаев это либо жестко закодировано в драйвере, либо информация находится в файле [116665].dts[116666]. Это также свидетельствует о том, что искомый драйвер, скорее всего, находится под [116667]драйверами/mtd[116668]. Копать дальше, используя такие команды:[12157] показывает, что mtd-драйвер - это [116669]m25p80[116670]. Это для различных флеш-устройств, которые обмениваются данными через SPI (это объясняет, почему поиск вещей, связанных с PCI, не помог). Глядя на исходный файл [116671]драйверов/mtd/devices/m25p80.c[116672], мы видим, что [116673]mtd->name[116674] установлено в следующем фрагменте:[12158]К сожалению, нет ни одного конкретного имени, используемого этим драйвером, скорее имена определены в другом месте и зависят от используемого аппаратного обеспечения. Копая дальше, мы видим, что [116675]data[116676] - это структура [116677]flash_platform_data[116678]. Глядя на её определение, мы получаем этот комментарий в [116679]include/linux/spi/flash.h[116680]:[12159]Кажется, что [116681]mtd-id[116682] специфична для платы, а не для самой флэш-памяти. Используя эту структуру, [116683]-A 2[116684] печатает 2 строки после совпадения и показывает большинство используемых имён:[12160]Имена файлов также отражают имена досок, так что, надеюсь, ваша тоже есть. Довольно много просто используют [116685]m25p80[116686] в качестве [116687]mtd-id[116688], так что, скорее всего, это оно и есть.[12161]В противном случае другая ветка фрагмента кода ведет обратно к [116689]init_name[116690] устройства, хотя я не знаю, как это найти ([116691]dmesg[116692]? ).[12162]Предположим, что [116693]m25p80[116694] - это [116695]mtd-id[116696], параметр ядра должен быть:[12163] Остаётся только перенастроить U Boot, добавив его в параметр [116697] bootargs[116698]. Перезагрузитесь и, надеюсь, у вас будут нужные размеры разделов.[116164].
2
27.01.2020, 21:28

Теги

Похожие вопросы