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 目录下,并重命名为 如下的文件名:

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

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

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

开发板烧录完成后,断电。开发板开发板拨码开关拨到 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中启动。

相关推荐
KYGALYX18 分钟前
在Linux中备份msyql数据库和表的详细操作
linux·运维·数据库
余—笙1 小时前
Linux(docker)安装搭建CuteHttpFileServer/chfs文件共享服务器
linux·服务器·docker
lang201509281 小时前
Linux高效备份:tar与gzip完全指南
linux·运维·服务器
IDOlaoluo1 小时前
OceanBase all-in-one 4.2.0.0 安装教程(CentOS 7/EL7 一键部署详细步骤)
linux·centos·oceanbase
catoop2 小时前
在 WSL 的 Ubuntu 中安装和配置 SSH 服务
linux·ubuntu·ssh
Hard but lovely2 小时前
linux: centos 软件包管理 yum源
linux·运维·centos
悲伤小伞2 小时前
Linux_Socket_UDP
linux·服务器·网络·c++·网络协议·udp
安全不再安全3 小时前
免杀技巧 - 早鸟注入详细学习笔记
linux·windows·笔记·学习·测试工具·web安全·网络安全
pursue.dreams3 小时前
Ubuntu安装Jenkins完整教程
linux·ubuntu·jenkins
实心儿儿3 小时前
Linux系统 —— 基础命令1
linux·运维·服务器