【1】u-boot的特点
u-boot源码开源、支持多种架构平台(ARM、X86、PowerPC、Mips)
u-boot启动时,主要完成各种硬件(串口、时钟、内存、EMMC、网卡等)的初始化
u-boot程序为裸机程序,体积小,当引导加载完系统后,u-boot任务就结束了。
【2】u-boot支持的命令
1>.help
打印u-boot支持的命令
2>.loadb
通过串口下载二进制文件到内存中
3>.go
跳转到指定的内存地址运行程序
4>.printenv/print/pri
打印u-boot的环境变量
5>.setenv saveenv
设置环境变量
用法:setenv 新的环境变量名 环境变量值
设置环境变量后,默认只是修改了内存中的环境变量,内存中的环境变量掉电丢失。
执行saveenv 命令,内存中的环境变量保存到EMMC中
6>.env
环境变量命令
用法:env default/set/save/print
7>.gpio
引脚操作
用法:gpio <input|set|clear|toggle> <pin>
toggle:翻转引脚电平
pin:gpioxy x:组的编号A-G,Z y:引脚编号
8>.mm
修改内存
用法:mm <.b .w .l> address
9>.md
回显内存中内容
10>.nm
修改内存
11>.run
运行环境变量后面的命令
12>.ping
测试开发板网络
13>.tftp
下载程序到开发的内存中
用法:tftp 下载到内存的起始地址 要下载的文件名
【3】配置开发板网络
1>.设置环境变量
setenv serverip x.x.x.x
setenv ipaddr x.x.x.x
setenv gatewayip x.x.x.x
setenv netmask x.x.x.x
saveenv
使用ping命令测试开发板网络是否畅通
2>.使用tftp下载程序
拷贝程序到~/tftpboot目录下===>下载到指定位置 :tftp 0xc0008000 程序名 ==>运行 go 0xc0008000
【4】u-boot源码镜像制作
1>.根目录下创建如下目录
mkdir ~/fsmp1a/u-boot
2>.拷贝u-boot源码到u-boot目录下
3>.对u-boot源码进行解压
4>.修改u-boot源码顶层目录下的Makefile,配置交叉编译工具链
将:
ifeq ($(HOSTARCH),$(ARCH))
CROSS_COMPILE ?=
endif
修改为:
ifeq (arm,arm)
CROSS_COMPILE ?= arm-linux-gnueabihf-
endif
5>.使用basic方式配置u-boot源码
make stm32mp15_basic_defconfig
6>.进入arch/arm/dts目录下,查找dk1公板设备树文件
7>.复制dk1公板设备数文件,修改为自己平台的设备数文件
cp stm32mp157a-dk1.dts stm32mp157a-fsmp1a.dts
cp stm32mp157a-dk1-u-boot.dtsi stm32mp157a-fsmp1a-u-boot.dtsi
cp stm32mp15xx-dkx.dtsi stm32mp15xx-fsmp1x.dtsi
8>.修改stm32mp157a-fsmp1a.dts文件,修改为包含自己设备树头文件
#include "stm32mp15xx-fsmp1x.dtsi"
9>.编译u-boot源码
make all
10>.编译成功生成对应的镜像文件
u-boot-spl.stm32
u-boot.img