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中启动。

相关推荐
Evan芙13 分钟前
Linux常见的日志服务管理的常见日志服务
linux·运维·服务器
hkhkhkhkh1232 小时前
Linux设备节点基础知识
linux·服务器·驱动开发
HZero.chen3 小时前
Linux字符串处理
linux·string
张童瑶3 小时前
Linux SSH隧道代理转发及多层转发
linux·运维·ssh
汪汪队立大功1233 小时前
什么是SELinux
linux
石小千3 小时前
Linux安装OpenProject
linux·运维
柏木乃一4 小时前
进程(2)进程概念与基本操作
linux·服务器·开发语言·性能优化·shell·进程
Lime-30904 小时前
制作Ubuntu 24.04-GPU服务器测试系统盘
linux·运维·ubuntu
百年渔翁_肯肯4 小时前
Linux 与 Unix 的核心区别(清晰对比版)
linux·运维·unix
胡闹544 小时前
Linux查询防火墙放过的端口并额外增加需要通过的端口命令
linux·运维·windows