loading linux img2a,U-Boot下使用TFTP启动Linux内核

使用TFTP启动内核的方法前,需要在PC主机上安装TFTP服务器软件包。这里,我们通过U-Boot提供的pxelinux功能,从TFTP服务器下载位于pxelinux.cfg目录下的PXE配置文件。实现pxelinux功能的命令是pxe,执行后会在TFTP服务器的pxelinux.cfg目录中加载一个pxe配置文件并进行解析。

TFTP目录结构

使用U-Boot pxelinux功能从TFTP下载并启动Linux内核,TFTP目录的文件结构如下,TFTP的根目录为"/srv/tftp"。

/srv/tftp/

├── pxelinux.cfg

│ ├── 01-e2-2a-66-fc-e7-fa

├── stm32mp157a-panguboard.dtb

├── uImage

pxelinux.cfg是目录名。

01-e2-2a-66-fc-e7-fa为pxe配置文件名,内容与extlinux.cfg文件相同。

Linux内核的镜像文件uImage和设备树文件dtb都是放在"/srv/tftp"目录下。

pxelinux.cfg 目录

由于TFTP服务可能会被多个开发板使用,因此“ PXE配置文件”的名称取决于U-boot参数(板的硬件地址/ IP地址)。

U-Boot按如下顺序在pxelinux.cfg目录中搜索PXE配置文件:UUID的值由"pxeuuid"命令来得到

硬件类型和地址:ARP类型为"1"代表以太网和MAC地址

IP地址是每个板子的子网掩码

文件被命令为"default-$CONFIG_SYS_ARCH-$CONFIG_SYS_SOC"

在TFTP服务器上至少每个板子需要提供一个配置文件。

以PanGu开发板为例UUID没有定义

ethaddr=e2:2a:66:fc:e7:fa

IP =192.168.2.167 (16进制编码为 C0A802A7)

CONFIG_SYS_ARCH=arm and CONFIG_SYS_SOC="stm32mp"

PXE配置文件内容

每个PXE配置文件的格式与由标准Yocto发行版生成的extlinux.conf文件相同。

对于菜单中的每个元素:LABEL是一个字符串,例如引导设备,如e MMC、SD卡、NAND等等。

通过KERNEL和FDT选项定义U-Boot加载的内核和设备树。

Linux内核启动参数是通过APPEND选项定义的,包括要使用的rootfs。

menu title Select the boot mode

DEFAULT eMMC

LABEL initramfs

KERNEL uImage

FDT stm32mp157a-panguboard.dtb

INITRD uInitrd

APPEND rootwait rw earlyprintk console=ttySTM0,115200

LABEL nfs

KERNEL uImage

FDT stm32mp157a-panguboard.dtb

APPEND root=/dev/nfs nfsroot=192.168.1.1:/nfsroot ip=dhcp rootwait rw earlyprintk console=ttySTM0,115200

LABEL sdcard

KERNEL uImage

FDT stm32mp157a-panguboard.dtb

APPEND root=/dev/mmcblk0p6 rootwait rw earlyprintk console=ttySTM0,115200

LABEL eMMC

KERNEL uImage

FDT stm32mp157a-panguboard.dtb

APPEND root=/dev/mmcblk1p6 rootwait rw earlyprintk console=ttySTM0,115200

在开发板的U-Boot下执行命令

Board $> env set serverip

Board $> run bootcmd_pxe

表示TFTP服务器的IP地址。

STM32MP> env set serverip 192.168.2.123

STM32MP> run bootcmd_pxe

BOOTP broadcast 1

DHCP client bound to address 192.168.2.167 (1 ms)

missing environment variable: pxeuuid

missing environment variable: bootfile

Retrieving file: pxelinux.cfg/01-e2-2a-66-fc-e7-fa

Using ethernet@5800a000 device

TFTP from server 192.168.2.123; our IP address is 192.168.2.167

Filename 'pxelinux.cfg/01-e2-2a-66-fc-e7-fa'.

Load address: 0xc4200000

Loading: #

3.9 KiB/s

done

Bytes transferred = 639 (27f hex)

Config file found

Select the boot mode

1:initramfs

2:nfs

3:sdcard

4:eMMC

Enter choice: 4

4:eMMC

missing environment variable: bootfile

Retrieving file: uImage

Using ethernet@5800a000 device

TFTP from server 192.168.2.123; our IP address is 192.168.2.167

Filename 'uImage'.

Load address: 0xc2000000

Loading: #################################################################

#################################################################

#################################################################

#################################################################

#################################################################

#################################################################

#######################

591.8 KiB/s

done

Bytes transferred = 6053888 (5c6000 hex)

append: root=/dev/mmcblk1p6 rootwait rw earlyprintk console=ttySTM0,115200

missing environment variable: bootfile

Retrieving file: stm32mp157a-panguboard.dtb

Using ethernet@5800a000 device

TFTP from server 192.168.2.123; our IP address is 192.168.2.167

Filename 'stm32mp157a-panguboard.dtb'.

Load address: 0xc4000000

Loading: #####

581.1 KiB/s

done

Bytes transferred = 69115 (10dfb hex)

## Booting kernel from Legacy Image at c2000000 ...

Image Name: Linux-4.19.43

Image Type: ARM Linux Kernel Image (uncompressed)

Data Size: 6053824 Bytes = 5.8 MiB

Load Address: c2000040

Entry Point: c2000040

Verifying Checksum ... OK

## Flattened Device Tree blob at c4000000

Booting using the fdt blob at 0xc4000000

XIP Kernel Image ... OK

Using Device Tree in place at c4000000, end c4013dfa

Starting kernel ...

[ 0.000000] Booting Linux on physical CPU 0x0

[ 0.000000] Linux version 4.19.43 (stevechen@PD12-debian) (gcc version 8.2.0 (GCC)) #14 SMP PREEMPT Mon Jan 13 16:10:22 CST 2020

[ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d

[ 0.000000] CPU: div instructions available: patching division code

[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache

[ 0.000000] OF: fdt: Machine model: i2SOM PanGu Board

.....

[ 0.000000] Kernel command line: root=/dev/mmcblk1p6 rootwait rw earlyprintk console=ttySTM0,115200

.....

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值