Загружается...
 

Инструкции по использованию NAND

Порядок действий для сборки и загрузки Yocto в NAND:


1) Добавить параметры NAND. Проверить физические параметры NAND можно через uboot командой nand info

/adk_yocto/sources/meta-adakta/conf/machine/adakta_nano6ull.conf

MKUBIFS_ARGS = "--min-io-size 2048 --leb-size 126976 --max-leb-cnt 776"
UBINIZE_ARGS = "--min-io-size 2048 --peb-size 131072 --sub-page-size 2048"


2) Включить сборку образа ubifs

adk_yocto/sources/meta-freescale/conf/machine/include/imx-base.inc

SOC_DEFAULT_IMAGE_FSTYPES = "sdcard.gz ubifs"


3) Создать дистрибутив и добавить в него сборку необходимых утилит (mtd-utils mtd-utils-ubifs imx-kobs)

/adk_yocto/sources/meta-adakta/recipes-stand/distrib/ull-test-image.bb

DESCRIPTION = "Test image for ADAKTA-mx6ull"

IMAGE_INSTALL = "packagegroup-core-boot libstdc++ packagegroup-core-x11 ${CORE_IMAGE_EXTRA_INSTALL} \
	packagegroup-xfce-base \
	kernel-modules \
"

REQUIRED_DISTRO_FEATURES = "x11"
IMAGE_LINGUAS = " "

#Данные параметры влияют на размер полученного образа, выбирайте с учетом размера используемой SD карты или NAND
#IMAGE_ROOTFS_EXTRA_SPACE = "1048576"
#IMAGE_OVERHEAD_FACTOR = "1.5"
#IMAGE_ROOTFS_SIZE = "1000000"

export IMAGE_BASENAME = "ull-test-image"

#First include a base image to base things off
inherit core-image gettext autotools
IMAGE_FEATURES +="ssh-server-openssh"
#Now add the multilib packages we want to install
CORE_IMAGE_EXTRA_INSTALL += "nano lsof proftpd iptables ntp cronie tzdata mtd-utils mtd-utils-ubifs imx-kobs"


4) Включить в ядре поддержку MTD, UBI и UBIFS

/adk_yocto/sources/meta-adakta/recipes-kernel/linux-nano6ull/linux-nano6ull-4.1.15/defconfig

CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:-(ubi)"
CONFIG_MTD_UBI=y
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_MTD_UBI_BEB_LIMIT=20
CONFIG_MTD_UBI_FASTMAP=y
CONFIG_MTD_UBI_GLUEBI=y
CONFIG_MTD_UBI_BLOCK=y
CONFIG_MTD_NAND_ECC=y
CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_IDS=y
CONFIG_MTD_NAND_GPMI_NAND=y
CONFIG_MTD_NAND_MXC=y
CONFIG_UBIFS_FS=y


5) Запустить сборку дистрибутива ull-test-image (bitbake ull-test-image)


6) Записать полученный образ (ull-test-image-adakta_nano6ull.sdcard.gz) на SD карту.


7) Запустить систему с SD карты и скопировать полученный образ (ubifs) на файловую систему, например в /home/root/ull-test-image-adakta_nano6ull-20180712135145.rootfs.ubifs


8) Запустить uboot

8.1) Установить переменное окружение

setenv mtdparts "mtdparts=gpmi-nand:-(ubi)"
setenv BD_BOOT_IMAGE_KERNEL "/boot/zImage"
setenv BD_BOOT_IMAGE_FDT "/boot/devicetree-zImage-adakta_nano6ull.dtb"
setenv bootnand 'if ubi part ubi && ubi check rootfs && sleep 1 && ubifsmount ubi0:rootfs; then ubifsload ${loadaddr} $BD_BOOT_IMAGE_KERNEL && ubifsload ${fdt_addr} $BD_BOOT_IMAGE_FDT && fdt addr ${fdt_addr} ${filesize} && bootz ${loadaddr} - ${fdt_addr}; echo FAIL; else echo OK; fi'
setenv bootargs "console=ttymxc0,115200 vmalloc=400M consoleblank=0 mtdparts=gpmi-nand:-(ubi) rw rootwait rootfstype=ubifs root=ubi0:rootfs ubi.mtd=0"
saveenv


8.2) Отформатировать и разбить NAND

nand erase.chip
ubi part ubi
ubi create rootfs


8.3) Скопировать ubifs образ c SD карты в память

load mmc 0:2 $loadaddr /home/root/ull-test-image-adakta_nano6ull-20180706122101.rootfs.ubifs


8.4) Записать ubifs образ в NAND

ubi write $loadaddr rootfs $filesize


9) Запустить загрузку с NAND

run bootnand