系统移植 uboot 1

news/2024/11/26 7:17:50/

一、uboot概念

1.1 uboot和bootloader关系

1.bootloader:是一系列引导加载程序的统称 ,uboot是其中之一。

1.2 uboot特点

1.uboot是由德国DNEX小组进行维护的

2.uboot是一个开源分布式系统

3.uboot支持多种硬件架构平台(ARM/X86/POWERPC)

4.uboot短小精悍

5.uboot是一个裸机程序

6.uboot 引导linux内核进行启动,内核启动之后,uboot的生命周期就结束

7.uboot在启动成功之后,会给内核传递两个参数(bootcmd和bootargs)

1.3 uboot环境变量

以下所有学习的命令,需要在串口工具进行输入
1.help ------>查看uboot中所有的环境变量相关信息内容
2.help uboot命令 ------>查看uboot命令中的环境信息
3.help loadb命令help loadb ------>串口工具输入命令loadb - load binary file over serial line (kermit mode) ------>打印帮助信息Usage:loadb [ off ] [ baud ] ------>uboot命令格式  - load binary file over serial line with offset 'off' and baudrate 'baud'
4.help go命令FSMP1A> help gogo - start application at address 'addr'Usage:go addr [arg ...] ------>uboot命令格式 - start application at address 'addr'passing 'arg' as arguments
5.help gpio命令FSMP1A> help gpiogpio - query and control gpio pinsUsage:gpio <input|set|clear|toggle> <pin>- input/set/clear/toggle the specified pingpio status [-a] [<bank> | <pin>]  - show [all/claimed] GPIOsinput:设置输入的值set:设置相应的值clear:设置清除相应的值toggle:设置gpio翻转状态例子:FSMP1A> gpio toggle gpioe10gpio: pin gpioe10 (gpio 74) value is 1FSMP1A> gpio toggle gpioe10gpio: pin gpioe10 (gpio 74) value is 0FSMP1A> gpio toggle gpiof10gpio: pin gpiof10 (gpio 90) value is 1FSMP1A> gpio toggle gpiof10gpio: pin gpiof10 (gpio 90) value is 0FSMP1A> gpio toggle gpioe8 gpio: pin gpioe8 (gpio 72) value is 1FSMP1A> gpio toggle gpioe8gpio: pin gpioe8 (gpio 72) value is 0
6.pri:打印环境变量信息   ------>串口工具输入:priFSMP1A> help priprintenv - print environment variables ------>打印变量信息Usage:printenv [-a] ------> 查看所有环境变量信息- print [all] values of all environment variablesprintenv name ... ------>pri uboot变量- print value of environment variable 'name'
7.pri/printenv ------>  打印环境变量信息arch=arm  ------> 指定架构baudrate=115200 ------> 波特率board=stm32mp1 ------>板子名称
bootargs=root=/dev/nfs nfsroot=192.168.1.210:/home/linux/nfs/rootfs,tcp,v4 console=ttySTM0,115200 init=/linuxrc ip=192.168.1.250bootargs参数功能:自启动参数,设置ubuntu挂载根文件系统到开发板上的路径和ip地址
bootcmd=tftp 0xc2000000 uImage;tftp 0xc4000000 stm32mp157a-fsmp1a.dtb;bootm 0xc2000000 - 0xc4000000bootcmd参数功能:自启动命令,倒计时时间进入0之前不按下enter键盘,进入自启动模式,并且执行自启动命令bootdelay=3 ------>倒计时时间ethaddr=12:56:78:ff:ff:4e ------>物理地址ipgatewayip=192.168.1.1 ------>设置开发板网关ipaddr=192.168.1.250 ------>设置开发板ip地址netmask=255.255.255.0 ------>设置开发板子网掩码serverip=192.168.1.210 ------>设置服务器(ubuntu)的ip地址
8.run -------> 运行run后面的命令   格式:run uboot命令 run bootcmd1)交互模式:当uboot启动成功之后,在倒计时时间进入0之前,按下键盘enter键,进入交互模式,和uboot命令进行交互2)自启动模式:当uboot启动成功之后,在倒计时时间进入0之前,不按下键盘enter键,进入自启动模式,执行自启动命令(bootcmd)不可以使用uboot命令3)设置bootcmd格式setenv bootcmd uboot命令1\;uboot命令2\;...............saveenv4)在arm课程中,需要输入两条命令:loadb 0xc0008000  go 0xc0008000    FSMP1A> setenv bootcmd loadb 0xc0008000\;go 0xc0008000FSMP1A> saveenvSaving Environment to MMC... Writing to MMC(0)... OK5)在串口工具中,查看bootcmd环境变量信息FSMP1A> pri bootcmdbootcmd=loadb 0xc0008000;go 0xc00080006)在串口工具中,执行run bootcmd命令,观察现象FSMP1A> run bootcmd## Ready for binary (kermit) download to 0xC0008000 at 115200 bps...7)在倒计时时间进入0之前,不按下键盘enter键,进入自启动模式,观察现象Hit any key to stop autoboot:  0 ## Ready for binary (kermit) download to 0xC0008000 at 115200 bps...
9.ping命令 ------->测试开发板和ubuntu组网是否成功ping - send ICMP ECHO_REQUEST to network hostUsage:ping pingAddress格式:ping 服务器(ubuntu)ip地址10.tftp命令 ------->使用tftp命令将文件下载到开发板内存中,一定保证开发板和ubuntu组网成功FSMP1A> help tftptftpboot - boot image via network using TFTP protocolUsage:tftpboot [loadAddress] [[hostIPaddr:]bootfilename]格式:tftp 地址 文件名

1.4 设置uboot环境变量

1.设置uboot环境变量:setenv  ------>修改环境变量
2.保存uboot环境变量:saveenv ------>保存环境变量
3.修改环境变量格式:setenv 要修改的环境变量 修改的值saveenv
4.设置开发板倒计时时间为20sFSMP1A> setenv bootdelay 20FSMP1A> saveenvSaving Environment to MMC... Writing to redundant MMC(0)... OKFSMP1A> pri bootdelaybootdelay=20

二、组网过程

2.1 准备工作

1.Ubuntu需要安装tftp服务器和nfs服务器成功,本地测试没有问题
2.关闭windows防火墙,参考如下图片
3.设置电脑为百兆全双工模式控制面板------>网络和Internet------>网络和共享中心------>更改适配器配置------>需要自己对应以太网网卡名字------>右键------>属性------>配置------>高级------>连接速度和双工模式------>百兆全双工模式------>确定

2.2 PC端和开发板连接方式

        网卡或USB转接。

2.3 ubuntu网络配置

1.ubuntu中需要设置为桥接模式

2.ubuntu中的网络设置需要设置为静态ip地址

3.需要通过ifconfig命令查看ip,是否为自己配置的静态ip

2.4 开发板网络配置

FSMP1A> setenv serverip 192.168.1.250 ----->设置服务器(ubuntu)ip地址
FSMP1A> setenv ipaddr 192.168.1.100 ----->设置服务器开发板IP地址
FSMP1A> setenv netmask 255.255.255.0 ----->设置开发板子网掩码
FSMP1A> setenv gatewayip 192.168.1.1 ----->设置开发板网关
FSMP1A> saveenv ----->记得保存!!!!
Saving Environment to MMC... Writing to MMC(0)... OK

2.5 测试ping命令

测试目的:测试开发板和ubuntu是否组网连接成功
FSMP1A> ping 192.168.1.250
成功现象:ethernet@5800a000 Waiting for PHY auto negotiation to complete... doneUsing ethernet@5800a000 devicehost 192.168.1.250 is alive
失败现象:ethernet@5800a000 Waiting for PHY auto negotiation to complete......... TIMEOUT !phy_startup() failed: -110FAILED: -110ping failed; host 192.168.1.250 is not alive

2.6 测试tftp命令

1.将asm-led.bin拷贝到~/tftpboot目录下cp asm-led.bin ~/tftpboot/
2.在串口工具:输入tftp下载命令FSMP1A> tftp 0xc0008000 asm-led.bin成功现象:Using ethernet@5800a000 deviceTFTP from server 192.168.1.250; our IP address is 192.168.1.100Filename 'asm-led.bin'.Load address: 0xc0008000Loading: #36.1 KiB/sdoneBytes transferred = 488 (1e8 hex)
3.在串口工具:输入go运行命令
FSMP1A> go 0xc0008000
## Starting application at 0xC0008000 ...练习题:如何设置bootcmd命令,倒计时时间进入0之前,可以自动执行tftp命令?FSMP1A> setenv bootcmd tftp 0xc0008000 asm-led.bin\;go 0xc0008000FSMP1A> saveenvSaving Environment to MMC... Writing to MMC(0)... OKFSMP1A> run bootcmd

 


http://www.ppmy.cn/news/2820.html

相关文章

delphi异步与javascript

delphi及C Builder异步处理与javascript 目录 delphi及C Builder异步处理与javascript 1、用于实现异步事件、异步方法、及其异步结果回调的可自定义的通用类型 2、你可引用以下基于接口化对象和异步结果的接口的抽象类&#xff0c;去实现异步方法或异步事件的自定义类 2.…

web前端期末大作业:基于HTML+CSS+JavaScript制作鲜花礼品在线购物网站设计(19页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

如何下载不同格式的卫星地图

如何下载不同格式的卫星地图 发布时间&#xff1a;2018-01-17 版权&#xff1a; 务名称&#xff1a;下载任务的名称&#xff0c;可重命名 经纬度范围当前下载区域所在的经纬度范围&#xff0c;不可更改 保存路径&#xff1a;下载你选择区域的文件保存的地方&#xff0c;可更…

html多个好看的背景动态效果(附源码)

文章目录1.设计来源1.1 图片轮动背景1.2 星空流星背景1.3 动态美女背景1.4 动态屋雨背景1.5 动态街道背景1.6 动态夜幕背景2.效果和源码2.1 动态效果2.2 透明度配置2.2 源代码源码下载作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/arti…

22 条 API 设计的最佳实践

在这个微服务的世界里&#xff0c;后端API的一致性设计是必不可少的。 今天&#xff0c;我们将讨论一些可遵循的最佳实践。我们将保持简短和甜蜜——所以系好安全带&#xff0c;出发咯&#xff01; 首先介绍一些术语 任何API设计都遵循一种叫做“面向资源设计”的原则&#…

聊聊与前端工程师天然互补的 Serverless

作为前端工程师&#xff0c;我们的使命是为用户提供良好的前端用户体验。随着云原生时代的到来&#xff0c;显而易见的&#xff0c;我们能做的更多了。Serverless 产品的特点是免运维、按量付费和自适应弹性&#xff0c;所以我们可以利用云上的各种 Serverless 能力&#xff0c…

目标检测算法——图像分割数据集汇总 2(附下载链接)

>>>深度学习Tricks&#xff0c;第一时间送达<<< &#x1f384;&#x1f384;近期&#xff0c;小海带在空闲之余&#xff0c;收集整理了一批图像分割数据集供大家参考。 整理不易&#xff0c;小伙伴们记得一键三连喔&#xff01;&#xff01;&#xff01;&am…