×

Внимание

Форум находится в режиме только для чтения.

NUC90x. Настройка и компиляция U-boot, Kernel Linux, YAFFS2, включение TFT LCD.

5 года 7 мес. назад - 5 года 7 мес. назад #6067 от UnclePetya
В прошлой статье мы познакомились с контроллером NUC90x, попробовали скомпилировать образ ядра (90Ximage). В этой статье речь пойдет о том, как полученные образы загрузить в нашу плату.
Для этого нам нужно:
- Выставить режим загрузки через USB. Для этого выставляем 1-ый и 2-ой переключатели на SW31 в положение “ON”; - Подключить плату к компьютеру через USB;
- Открыть специальную программу NuWriter.exe. Найти ее можно в приложенном в прошлой статье BSP: \Tools\NuWriter\bin
В выпадающем меню Choose type можно выбрать тип памяти куда мы будет записывать наши образы. Выберем тип NAND.
Для использования любой операционной системы необходимо ее загрузить. Загрузчик U-Boot, разработан для того, чтобы, запустившись после включения МК, подготовить его к запуску основной операционной системы.
В качестве загрузчика U-Boot в случае с использованием NAND Flash нам нужны два бинарных файла: основной файл U-Boot, обладающий полным функционалом, и специальный SPL U-Boot, функцией которого является перемещение основного U-Boot из NAND в DDR память и его запуска.
Способ компиляции U-Boot описан в пункте 4.3 NUC90X Linux BSP User Manual (для тех, кто хочет пропустить данный этап прилагаются оба файла: u-boot-edit.bin и u-boot-spl.bin). Для начала необходимо зайти в директорию:
$ cd ~/YourDirectory/nuc90xbsp/uboot.v2016.11
И непосредственно скомпилировать необходимые файлы:
$ make O=../build/nuc90X_uboot/ distclean
$ make O=../build/nuc90X_uboot/ nuc90X_config 
$ make O=../build/nuc90X_uboot/ all
Скомпилированный файл u-boot.bin можно найти в папке ../nuc90xbsp/build/nuc90x_uboot. Там же находится папка spl, в которой лежит файл u-boot-spl.bin. К сожалению, предустановленная конфигурация основного U-Boot включает в себя поддержку SPI Flash, что приводит к ошибке при загрузке kernel linux из NAND. Так как, пока что правильно настроить конфигурацию мне не удалось, предлагаю скачать из прикрепленных файлов предварительно скомпилированный рабочий u-boot-edit.bin и использовать его вместо u-boot.bin.

В прошлый раз мы уже компилировали образ ядра 90ximage. В этот раз нам вновь придется это сделать, ведь «повторение – мать учения». Зачем это делать вновь? Во-первых, для загрузки нам необходим не Image файл, а uImage. Во-вторых, нам нужно добавить некоторые изменения в конфигурации ядра для возможности монтирования файловой системы YAFFS2.
Заходим в директорию ядра:
$ cd ~/YourDirectory/nuc90xbsp/linux-3.10.x
Выполним следующие команды:
$ make distclean
	$ make nuc906_defconfig
	$ make menuconfig
Перед нами откроется графическое меню конфигурации ядра. На нашей плате имеется ЖКИ с разрешением 800х480. Включим поддержку LCD:
Device Drivers ---> 
	Graphics support ---> 
		<*> Support for frame buffer devices ---> 
			[*] NUC90X LCD framebuffer support 
				NUC90X LCD panel selection (800x480 5-Inch Color TFT LCD) --->
 				LCD source format (RGB888 support) ---> 
		Console display driver support ---> 
			<*> Framebuffer Console support
Чтобы на экран выводилось загрузочное лого необходимо выполнить следующее:
Device Drivers ---> 
	Graphics support --->
		[*] Bootup logo ---> 			
			[*] Standard 224-color Linux logo
Так как мы решили загрузить файловую систему YAFFS2, то для этого необходимо совершить ряд подготовительных процессов, часть из которых связаны с конфигурацией kernel. В первую очередь необходимо включить функцию Memory Technology Device (MTD) для работы с NAND Flash.
Device Drivers ---> 
	Generic Driver Options ---> 
		<*> Nuvoton NUC90X FMI function selection 
			Select FMI device to support (Support MTD NAND Flash) ---> 
	-*- Memory Technology Device (MTD) support ---> 
		<*> Caching block device access to MTD devices 
			-*- NAND Device Support ---> 
				-*- Nuvoton NUC90X MTD NAND ---> 
				NUC90X NAND Flash pin selection (Port C) --->
После чего включаем поддержку YAFFS2.
File systems ---> 
	[*] Miscellaneous filesystems ---> 
		<*> yaffs2 file system support 
		<*> Autoselect yaffs2 format
		<*> Enable yaffs2 xattr support
Сохраняем произведенные изменения в конфигурации и закрываем меню. Остается только скомпилировать образ ядра uImage:
$ make uImage
Полученный образ автоматически копируется в папку image с названием 90xuimage.
Осталось скомпилировать YAFFS2. Для этого в BSP предусмотрена специальная утилита yaffs2utils, которая позволяет сделать это одной командой.
$ cd ../applications/yaffs2utils/
$ sudo ./mkyaffs2 –inband-tags -p 2048 ../../rootfs rootfs_yaffs.img
Полученный образ находится в той же папке.

Вернемся к NuWriter. Теперь у нас есть все необходимые файлы (u-boot-spl.bin, u-boot.bin, 90xuimage, root_yaffs2.img), которые мы копируем в какую-нибудь папку из виртуальной машины на Windows.
Приступим к загрузке этих файлов на плату.
a) Выбираем uBoot в поле Image Type, в поле Image execute address вписываем 0x200. Нажимаем на иконку справа от поля Image Name, находим файл u-boot-spl.bin. Нажимаем Burn. b) Далее выбираем Image Type – Data. Находим файл u-boot.bin. В поле Image start offset вписываем 0х100000 и нажимаем Burn.
c) Находим файл 90xuimage (выбираем All files (*.*), чтобы образ отобразился в окне). В поле Image start offset вписываем 0х200000 и нажимаем Burn.
d) Находим файл root_yaffs.img (выбираем All files (*.*), чтобы образ отобразился в окне). В поле Image start offset вписываем 0хb00000 и нажимаем Burn.

Переставляем 2 переключатель в положение off на SW31. Соединяем компьютер с UART0 на плате. Включаем терминальную программу (например putty) и перезагружаем плату.
Для загрузки нашей ОС автоматически при каждом включении пропишем следующее:
=> setenv bootcmd nboot 0x7fc0 0 0x200000\; bootm 0x7fc0
	=> saveenv
	=> reset
После того, как загрузится ОС Linux вверху на экране можно увидеть пингвина. Далее необходимо смонтировать YAFFS2. Последующие команды писать необходимо в терминал.
~ # mkdir flash
~ # mount –t yaffs2 –o “inband-tags” /dev/mtdblock2 /flash

В следующий раз мы попробуем поработать со звуком, протестируем резистивный тачскрин и многое другое. До скорых встреч!
Время создания страницы: 0.052 секунд
Работает на Kunena форум