智能路由器操作系统openwrt 之二 uboot开发

Uboot 简介

定义

维基百科对uboot的定义:
U-Boot(Universal Boot Loader)是一个开源的主引导加载程序,用于嵌入式设备中打包指令以引导设备的操作系统内核。它适用于多种计算机体系结构,包括68k,ARM,Blackfin,MicroBlaze,MIPS,Nios,SuperH,PPC,RISC-V和x86。

功能

U-Boot既是第一阶段也是第二阶段的引导加载程序。它由系统的ROM或BIOS从支持的引导设备加载,例如SD卡,SATA驱动器,NOR闪存(例如使用SPI或I²C)或NAND闪存。如果存在大小限制,U-Boot可能分为几个阶段:平台将加载一个小型SPL(辅助程序加载器),这是U-Boot的精简版本,SPL将执行初始硬件配置和加载更大,功能齐全的U-Boot版本。无论是否使用SPL,U-Boot都执行第一阶段(例如,配置内存控制器和SDRAM)和第二阶段引导(执行多个步骤以从必须配置的各种设备加载现代操作系统,呈现用于与用户交互并控制引导过程的菜单等。

U-Boot在串口上运行命令行界面。使用控制台,用户可以加载和引导内核,可能会更改默认参数。还有命令可以读取设备信息,读取和写入闪存,从串行端口或网络下载文件(内核,引导映像等),操作设备树,以及使用环境变量(可以写入持久存储) ,用于控制U-Boot行为,例如自动引导前的默认引导命令和超时,以及以太网MAC地址等硬件数据。

核心功能

  • 初始化部分硬件,包括时钟、内存等等
  • 加载内核到内存上
  • 加载文件系统、atags或者dtb到内存上
  • 根据操作系统启动要求正确配置好一些硬件
  • 启动操作系统

monitor功能

  • 进行调试
  • 读写内存
  • 烧写Flash
  • 配置环境变量
  • 命令引导操作系统

架构

这里以项目MTK7628为基础分析,MTK7628是MIPS32,对应uboot框图如下:
这里写图片描述

后面将简介整个uboot移植过程。

Uboot准备

本文基于的芯片是MTK7628,在github 寻找到相对稳定的版本 github:https://github.com/qdk0901/openwrt-uboot-mt7628
fork https://github.com/ShaolinDeng/openwrt-uboot-mt7628
基于此版本进行修改

Uboot移植

安装README 将整个仓库 复制到 package/boot/下,然后make menuconfig 中boot项 选择
在这里插入图片描述

Uboot 编译

make package/uboot-mt7628/{clean,compile,install} V=s

编译错误问题

Uboot 开发

提问、交流—公众号

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lin_AIOS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值