Как загрузить iMX8 из NAND

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Как загрузить iMX8 из NAND

6,292件の閲覧回数
AleksandrSh
Contributor I

Нами разработана плата с использованием iMX8M Dual процессора.
Удалось сделать:
- собрать U-Boot
- настроить/тренировать LPDDR4
- с помощью uuu загрузить spl/u-boot

Через командную строку U-Boot удается читать/писать в NAND.
NAND используется S34MS16G2
Page Size: (2048 + 128) bytes; 128-byte spare area

Следующий этап научить плату стартовать из NAND
Согласно i.MX 8M Dual/8M QuadLite/8M Quad Applications Processors Reference Manual
как я понял необходимо подготовить образ прошивки с IVT заголовком.

1) Вопрос как это сделать? Есть ли готовое решение для формирования образа для NAND?

2) Есть ли инструкция как запрограммировать NAND?

3) По какому адресу BootROM code обращается в NAND для загрузки?
В Reference Manual в 6.1.6.1 Image Vector Table and Boot Data приведена Table 6-18 (см. рис)
для NAND offset 1 Kbyte = 0x4000 bytes. Здесь ошибка? Адрес 0x400 должен быть?

0 件の賞賛
返信
5 返答(返信)

6,276件の閲覧回数
AleksandrSh
Contributor I

во время сборки прошивки формируется imx8-boot-sd.bin файл с IVT заголовком, если зашить его в NAND средствами U-Boot, то BootROM загрузит из него SPL ?

0 件の賞賛
返信

6,279件の閲覧回数
Yuri
NXP Employee
NXP Employee

@AleksandrSh 
Hello,

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

https://www.nxp.com/design/software/embedded-software/i-mx-software/embedded-linux-for-i-mx-applicat...

 

Regards,
Yuri.

0 件の賞賛
返信

6,276件の閲覧回数
AleksandrSh
Contributor I

правильно я понимаю, что при программировании NAND через UUU предварительно собирать образ прошивки не требуется, а заголовок IVT будет сформирован UUU ?

0 件の賞賛
返信

6,262件の閲覧回数
Yuri
NXP Employee
NXP Employee

@AleksandrSh 
Hello,

> правильно я понимаю, что при программировании NAND через UUU предварительно
> собирать образ прошивки не требуется, а заголовок IVT будет сформирован UUU ?

 В целом - да.

Пример "Burn NAND flash by linux kernel":

https://github.com/NXPmicro/mfgtools/wiki/Sample-script

Regards,
Yuri.

0 件の賞賛
返信

6,201件の閲覧回数
AleksandrSh
Contributor I

В результате сборке проекта у меня получились следующие файлы:

- bl31.bin
- boot.vfat
- Image
- imx8-boot-sd.bin
- imx8mq-evk.dtb
- lpddr4_pmu_train_fw.bin
- rootfs.ext2
- rootfs.ext4
- rootfs.tar
- sdcard.img
- signed_hdmi_imx8m.bin
- u-boot.bin
- u-boot.itb
- u-boot-nodtb.bin
- u-boot-spl.bin
- u-boot-spl-ddr.bin

Когда я переключаю плату в режим загрузки с eMMC, запрограмировав следующим образом

uuu -b emmc_all imx8-boot-sd.bin sdcard.img

плата успешно стартует и загружается.

Когда я переключаю плату в режим загрузки с NAND, пытаюсь зашить минимальную прошивку,
чтобы проверить загрузку из NAND

uuu -b nand imx8-boot-sd.bin

процесс программирования успешно завершается, но загрузка из NAND не происходит.

1) В названии файла imx8-boot-sd.bin имеется суффикс "sd", может для NAND требуется
сформировать какой-то свой bootloader?

По указанной выше ссылке есть пример скрипта загрузки NAND
https://github.com/NXPmicro/mfgtools/wiki/Sample-script#burn-nand-flash-by-linux-kernel

# Please replace below item with actual name
# @_flash_fw.bin | boot loader firmware, for i.MX8QM/QX, it's different from _flash.bin, for all other platforms, it's same as _flash.bin
# @_flash.bin | boot loader file burn to NAND
# @_Image | linux kernel image, zImage for arm32, Image for arm64
# @_board.dtb | board dtb file
# @_initramfs.cpio.gz.uboot | initramfs
# @_tee | optee image
# @_rootfs.tar.bz2 | rootfs

2) не совсем понятно какие параметры для запуска скрипта требуется использовать

_flash_fw.bin - для i.MX8QM/QX, т.к. у нас iMX8M, то требуется использовать _flash.bin
для этого _flash_fw.bin параметр пропускается или должен быть дважды указан bootloader?

_Image = Image
_board.dtb = imx8mq-evk.dtb
_initramfs.cpio.gz.uboot = ???
_tee = ???
_rootfs.tar.bz2 = rootfs.tar (??? bz2)

Подскажите как правильно должна быть написана команда для uuu

uuu -b my_script_nand.lst imx8-boot-sd.bin Image ...???

0 件の賞賛
返信