网站首页 > 技术教程 正文
Bootloader是硬件启动时执行的引导程序,是运行操作系统的前提;
是在操作系统内核或用户应用程序运行之前运行的一段代码;
在嵌入式系统之中,整个系统的初始化和加载任务一般由BootLoader来完成。
Bootloader运行通常分为两个阶段。
BootLoader独立于操作系统。
BootLoader不仅依赖于CPU的体系结构,而且依赖嵌入式系统板级设备的配置。
Bootloader的执行模式
自启动模式:该模式下,BootLoader按照预先设定的命令自动运行,整个过程并没有用户介入
交互模式:该模式下,BootLoader通过串口和PC机通信,接受用户命令。
U-boot 通用引导程序(universal bootloader)
uboot主要是用来启动操作系统内核的;
uboot还要用来部署整个计算机系统;
uboot中还有操作Flash等板子上硬盘驱动;
ubbot还得提供一个命令行界面供人使用。
早期的uboot的版本号类似于这样:uboot1.3.4。后来版本号变成了类似于uboot-2016.06。
其核心部分几乎没有变化,对于老伴的芯片,新旧版本的uboot并没有差异。
具有可移植性,具有源代码级别的移植能力,可以针对于多个开发板进行移植。
uboot必须自身可开机直接启动
uboot必须进行和硬件相对应的代码级别的更改和移植,才能够保证可以从相应的启动介质启动。uboot中第一阶段的start.S文件中具体处理。
可以在uboot中事先给Linux内核准备一些启动参数放在内存中特定位置然后传给内核,内核启动后会到这个特定位置区去uboot传给他的参数。
uboot的本质就是一个裸机程序,是一个开源项目
uboot运行时会被加载到内存之中然后一条一条指令去CPU执行
环境变量可以被认为是系统的全局变量,程序或者系统在运行时候可以通过读取环境变量来指导程序的运行,这要设置的好处是灵活。
环境变量就是运行时的配置属性。
uboot 常用命令
类似Linux终端的行缓冲命令行
行缓冲的意思就是:当我们向终端命令行输入命令的时候,这些命令没有立即被系统识别,而是被缓冲到一个缓冲区(系统认为没有输入完)
Linux终端设计有3种缓冲机制:无缓冲、行缓冲、全缓冲
有些命令有简化别名
printenv/print :打印环境变量
setenv/set :设置新的变量
saveenv/save :保存环境变量
ping :网路测试指令
fastboot通过USB进行数据传输
tftp通过有线网络进行
tftp :下载指令
tftp 0x30000000 zImage
nfs :启动内核命令
bootm启动内核同时给内核传参;go不传参,其内部就是一个函数指针指向一个内存地址直接调用那个函数,实质是跳转到一个内存指针去运行
环境变量有两份,一份在flash中,另一份在DDR中。uboot开机时一次性从flash中读取全部环境变量到DDR中作为初始化值,然后使用过程中都是用DDR这份,用户可以用save指令将DDR中的环境变量重新写入flash去更新。
bootdelay :开机倒数时间
reset :uboot重启
ipaddr :开发板
serverip :服务器
gatewayip :网关
netmask :子网掩码
ethaddr :开发板本地MAC地址
bootcmd :自动启动运行命令设置
bootargs :uboot给kernel传参
console=ttySAC2,115200 :控制台使用串口2,波特率115200
root=/dev/mmcblk0p2 rw :根文件系统在SD卡端口0设备第二分区,根文件系统是可读可写的
init=/linuxrc :linux的进程1的路径
rootfstype=ext3 :根文件系统的类型是ext3
uboot中对flash和DDR的管理
分区就是说对flash进行分块管理
uboot必须从flash起始地址开始存放,一般512K或1M
环境变量一般紧贴uboot存放,大小为32k
kernel可以紧贴环境变量来存放,大小为5M
rootfs
剩下的是自由分区
DDR的分区和flash的分区不同,主要是flash是掉电存在的,DDR是每次系统运行时才开始部署。
内存的分区是在Linux内核启动之前,Linux内核启动之后内存的管理模块会接管整个内存空间。
内存分区的关键就是避免不同功能使用了同一块内存造成互相踩踏。
猜你喜欢
- 2024-10-23 基于S12 MagniV系列的LIN Bootloader设计
- 2024-10-23 怎么使用USBasp给arduino烧写bootloader?
- 2024-10-23 腾讯 ROG 游戏手机 6 / Pro 公开内核源码并支持解锁 bootloader
- 2024-10-23 浅谈基于uds的bootloader设计(简要概述u-boot的主要功能)
- 2024-10-23 基于CAN总线的Bootloader设计与实现
- 2024-10-23 Rust语言开发操作系统-第二章(最小化内核)
- 2024-10-23 基于RT-Thread完整版搭建的极简Bootloader
- 2024-10-23 海信阅读手机A9现可解锁bootloader并获取root权限
- 2024-10-23 三星警告Galaxy Z Fold 3解锁bootloader将失去相机功能
- 2024-10-23 Realme全机型刷入TWRP_Recvery面具Root刷机包下载最简单教程
你 发表评论:
欢迎- 最近发表
-
- linux日志文件的管理、备份及日志服务器的搭建
- Linux下挂载windows的共享目录操作方法
- Linux系统中的备份文件命令(linux系统中的备份文件命令有哪些)
- 麒麟KYLINOS|通过不同方法设置用户访问文件及目录权限
- 「Linux笔记」系统目录结构(linux目录的结构及含义)
- linux中修改归属权chown命令和chgrp命令
- 工作日报 2021.10.27 Android-SEAndroid权限问题指南
- Windows和Linux环境下,修改Ollama的模型默认保存路径
- 如何强制用户在 Linux 上下次登录时更改密码?
- 如何删除Linux文件夹中除某些扩展名之外的所有文件?
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)