====== Описание записи загрузчиков в NAND ====== На данной странице описаны действия, необходимые для автономной загрузки системы из NAND памяти. Сначала необходимо подготовить SD карту для загрузки: - [[somiq-am35-sd|Подготовить SD карту для загрузки SomIQ-AM35]] - Скопировать файл MLO на SD карту ([[somiq-am35-fw|как создать MLO файл]]) - Скопировать u-boot.bin на SD карту ([[somiq-am35-fw|как создать u-boot.bin файл]]) - Скопировать файл ядра uImage на SD карту ([[somiq-am35-kernel|как создать uImage файл]]) - Скопировать файл с файловой системой (например, rootfs.jffs2) - Загрузится с SD карты (на [[Somiqboard]] удерживайте кнопку USER (S1) и нажмите RESET (S2)) - Когда загрузится u-boot выполните следующие команды ===== Карта памяти NAND ===== Пространство NAND распределено следующим образом: ^ Назначение ^ Адресное пространство ^ | x-loader | 0x00000000 - 0x0007FFFF | | u-boot | 0x00080000 - 0x0023FFFF | | u-boot Env | 0x00240000 - 0x0027FFFF | | ядро Linux | 0x00280000 - 0x67FFFF | | файловая система | 0x680000 - до конца NAND | ===== Инициализация SD/MMC и стирание NAND ===== Инициализация карты SD/MMC необходима, чтобы можно было считать с нее необходимые файлы. mmc rescan Перед записью в любую флеш память её необходимо сначала очистить, т.е. подготовить физически. Для этого используют специальные команды: **!Обратите внимание, что возможно вам не нужно стирать полностью содержимое всей флеш-памяти!** * Полная очистка всего NAND чипа: nand erase.chip * Очистка только определенных секторов (1 сектор = 128кБ = 0x20000) в этом примере очистим 4 первых (смещение "0" в команде) сектора на чипе флеш памяти nand erase 0 80000 Обратите внимание, что возможны сообщения, что первые блоки оказались помеченными **bad**. Это в принципе не возможно (гарантирует производитель микросхемы), поэтому чтобы действительно очистить сектора, помеченные как bad, выполните команду (на запрос нажмите "y"+Enter): nand scrub 0 80000 ===== Запись X-loader ===== mw.b 81600000 0xFF 60000 nand erase 0 60000 fatload mmc 0 0x81600000 MLO cp.b 0x81600000 0x81620000 20000 cp.b 0x81600000 0x81640000 20000 nandecc hw nand write.i 0x81600000 0 60000 Обратите внимание, что использована команда write.**i** - запись с пропуском bad-блоков. ===== Запись u-boot.bin ===== mw.b 0x81600000 0xFF 60000 nand erase 40000 100000 fatload mmc 0 0x81600000 u-boot.bin nandecc sw nand write.i 0x81600000 80000 60000 ===== Запись ядра ===== mw.b 81600000 0xFF 500000 fatload mmc 0 81600000 uImage nand erase 160000 500000 nandecc sw nand write.i 81600000 160000 500000 ===== Запись файловой системы ===== в данном примере записывают файловую систему в формате jffs2, но может быть любая: FAT, EXT2 и т.п. Чтобы создать образ файловой системы JFFS2 выполните команду: sudo mkfs.jffs2 -lqn –e 128 -r target -o fs.jffs2 В данной команде: * target - директория где находятся файлы для файловой системы * fs.jffs2 - имя образа файловой системы //Обратите на размер стираемого пространства, т.к. объем флеш памяти может быть 128М, 256М и т.д. Тогда нужно очищать весь объем, предназначенный для записи.// fatload mmc 0 0x81600000 rootfs.jffs2 nand erase 660000 3200000 nandecc sw nand write.i 0x81600000 660000 FF0000 ===== Проблемы ===== Что делать если вы записали в NAND неверные данные, испортили память и теперь модуль не грузится? Для восстановления нормальной работы вам потребуется загрузочная SD карта. Нажмите кнопку USER (S1 на Somiqboard v2) и удерживая её нажмите кнопку RESET (S2 на Somiqboard v2), отпустите RESET, но удерживайте USER. Модуль загрузится с SD и далее вы можете реанимировать NAND флеш.