Новый раздел NAND для UBIFS

Я работаю над кастомной платой на базе NXP i.MX7D SoC. Я хочу создать новый раздел для сохранения базы данных конфигурации на nand.

Для этого я внес изменения в u-boot в аргументах mtdparts, которые передаются ядру в командной строке. Новый раздел nand создан успешно, и я могу видеть новый узел mtd в /dev.

Но чтобы сохранить файл конфигурации на новых разделах, мне нужно отформатировать и смонтировать его. Я следовал ниже шагов.

ubiformat /dev/mtd5
ubiattach /dev/ubi_ctrl -m 5
ubimkvol /dev/ubi1 -Nconf -m
mkdir -p /mnt/conf
mount -t ubifs ubi1:conf /mnt/conf

Все вышеперечисленные шаги успешны. я могу создать файл в каталоге / mnt / conf. но, к моему удивлению, в следующем цикле загрузки я не могу увидеть новый узел ubi1 в /dev и не могу его смонтировать. Если я снова выполню вышеуказанные шаги, Предыдущая база данных недоступна. Я думаю, что мне нужно внести некоторые изменения в U-Boot.

Если кто-то сталкивался с такой проблемой или знает, что делать, пожалуйста, дайте мне знать.

1 ответ

Вот моя последовательность запуска для UBIFS:

mkdir /data
ubiattach /dev/ubi_ctrl -m 8 -O 2048 | grep "available 0 LEBs"
retval=$?
if [ "$retval" = "1" ]; then # Flash memory doesn't contain UBI image
        ubimkvol /dev/ubi0 -N data_volume -m
fi
mount -t ubifs -o sync ubi0:data_volume /data
retval=$?
if [ "$retval" = "0" ]; then
        echo "Storage is ready"
else
        echo "Storage is not ready"
fi

(В твоем случае ubiattach буду иметь -m 5 в качестве параметра). Я проверяю, была ли Flash уже инициализирована, используя номер доступного LEBs, и использую ubimkvol если форматирование необходимо.

Бег ubiformat или же ubimkvol уничтожает ранее созданный том UBIFS. Не используйте их при каждом запуске.

Ли ubiattach запуск позволит вам смонтировать раздел?

Я пишу сценарий запуска вот так:

ubiattach /dev/ubi_ctrl -m 5 
if [ $? != 0 ]; then #if ubiattach fail, then ubiformat neccesary
    ubiformat /dev/mtd5 -O 512 -y
    ubiattach /dev/ubi_ctrl -m 5
fi
vc=$(cat /sys/class/ubi/ubi1/volumes_count)  
if [ $vc == 0 ]; then 
    ubimkvol /dev/ubi1 -N nandubi -s 80MiBmp
    mount -t ubifs ubi1:nandubi /mnt/nand   
else
    mount -t ubifs ubi1:nandubi /mnt/nand   
fi  
Другие вопросы по тегам