APLHA开发板系统启动

一.  简介

前面学习了 uboot的移植,在 NXP的 Kernel内核源码里添加 ALPHA开发板的工作。本文为设置CPU主频做准备,开发板从 Nand-Flash中启动根文件系统。

具体来说,我的目的是开发板能正常启动(从Nand-Flash加载根文件系统)。

二.  APLHA开发板系统启动

1.  开发板启动文件

uboot: 添加过ALPHA开发板的NXP官方 uboot

zImage(kernel镜像):添加过ALPHA开发板的 NXP官方 kernel

设备树文件(.dtb):添加过ALPHA开发板的 NXP官方kernel内部,设备树文件

根文件系统:正点原子提供的 文件系统。

MFG烧录工具: 正点原子提供的 MFG烧录工具

2.  APLHA开发板系统启动

(1)  首先,通过 MFG-Tool工具烧录文件到 Nand-Flash中。

这里使用正点原子提供的 MFG-Tool工具,将添加了ALPHA开发板的 u-boot.imx复制到 MFG-Tool工具 mfgtool/Profiles/Linux/OS Firmware/files/boot 目录下,并重命名为 如下的文件名:

APLHA开发板系统启动_第1张图片

因为我使用的是 Nand-Flash开发板,DDR是 256MB,所以,我这里将编译后的 (经过移植的NXP官方的 uboot)u-boot.imx拷贝到该目录下后,重命名为 u-boot-imx6ull-14x14-ddr256-nand.imx。

更新好 uboot文件后,开始烧录开发板。开发板拨码开关拨到 usb启动,开发板上电。打开如下文件开始烧录:

APLHA开发板系统启动_第2张图片

(2)  其次,设置从 tftp服务下载 zImage与设备树文件(.dtb文件)到开发板,设置从 Nand-Flash启动 根文件系统。具体就是设置 bootcmd bootargs参数。

开发板烧录完成后,断电。开发板开发板拨码开关拨到 nand-Flash启动,上电,按下 "Enter"回车键进入uboot命令模式。

首先,保证 开发板可以 ping通 ubuntu。具体是:开发板设置网络相关的一系列地址,tftp服务可以使用。设置网络相关地址包括如下:

setenv ipaddr 192.168.1.50 
setenv ethaddr b8:ae:1d:01:00:00
setenv gatewayip 192.168.1.1
setenv netmask 255.255.255.0 
setenv serverip 192.168.1.66 

uboot命令模式下设置完上面的ip 地址后,也需要保存,保存命令如下:

=> saveenv

设置环境变量 bootcmd,操作如下:

=> setenv bootcmd 'tftp 0x80800000 zImage;tftp 0x83000000 imx6ull-alientek-nand.dtb;bootz 0x80800000 - 0x83000000;'
=> saveenv
Saving Environment to NAND...
Erasing NAND...
Erasing at 0x3c00000 -- 100% complete.
Writing to NAND... OK
=>

环境变量 bootcmd设置后,开发板重新上电后,就会通过 tftp服务从ubuntu系统加载 zImage和 imx6ull-alientek-nand.h(即设备树文件),并启动。这里可以进行测试。

注意:这里需要保证 ubuntu虚拟机已经开启!!!

设置 环境变量 bootargs,操作如下:

=> setenv bootargs 'console=ttymxc0,115200 ubi.mtd=5 root=ubi0:rootfs rootfstype=ubifs mtdparts=gpmi-nand:4m(u-boot),128k(env),1m(logo),1m(dtb),8m(kernel),-(rootfs)'
=> saveenv
Saving Environment to NAND...
Erasing NAND...
Erasing at 0x3c00000 -- 100% complete.
Writing to NAND... OK

可以看出,bootargs设置的是与开发板交互的串口:ttymxc0,波特率为 115200。

ubi.mtd=5表示:根文件系统存放在nand-flash的第 5个分区。

mtdparts=gpmi-nand:4m(u-boot),128k(env),1m(logo),1m(dtb),8m(kernel),-(rootfs)

表示uboot,环境变量,logo,dtb设备树文件,内核镜像,根文件系统存在 nand-Flash中的大小。

注意:这里的 uboot,环境变量,logo,dtb设备树文件,内核镜像,根文件系统的分区大小草考的是:正点原子出厂uboot源码的nand-Flash分区分配大小(参考 uboot根目录下/include/configs/mx6ullevk.h中 Nand-Flash部分,开发文档中也有说明过)。

最后,确认bootcmd与 bootargs环境变量是否设置成功:

=> printenv
baudrate=115200
board_name=EVK
board_rev=14X14
bootargs=console=ttymxc0,115200 ubi.mtd=5 root=ubi0:rootfs rootfstype=ubifs mtdparts=gpmi-nand:4m(u-boot),128k(env),1m(logo),1m(dtb),8m(kernel),-(rootfs)
bootcmd=tftp 0x80800000 zImage;tftp 0x83000000 imx6ull-alientek-nand.dtb;bootz 0x80800000 - 0x83000000;
bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
bootdelay=3
..........................

serverip=192.168.1.66

Environment size: 1064/131068 bytes

(3)  最后,开发板重新上电启动。保证开发板能成功从 Nand-Flash启动根文件系统。

开发板重新上电,如下:

=> reset
resetting ...


U-Boot 2016.03 (Nov 03 2023 - 02:32:33 +0800)

CPU:   Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 52C
Reset cause: WDOG
Board: MX6ULL ALIENTEK NAND
I2C:   ready
DRAM:  256 MiB
NAND:  512 MiB

.......................................

* starting FTP Server: vsftpd... done.
Starting crond: fec 20b4000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
OK
Starting nginx: nginx.
Running local boot scripts (/etc/rc.local).

root@ATK-IMX6U:~# icm20608: version magic '4.1.15-g19f085b-dirty SMP preempt mod_unload modversions ARMv7 p2v8 ' should be '4.1.15 SMP preempt mod_unload modversions ARMv6 p2v8 '

root@ATK-IMX6U:~#
root@ATK-IMX6U:~#

可以看出,开发板重新上电后,最后按下 "Enter"回车键,出现可以输入命令,即出现了# 符号,即说明开发板已经成功从 nand-Flash中启动。

你可能感兴趣的:(系统移植篇,linux,arm开发)