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

文章目录

  • Uboot 简介
    • 定义
    • 功能
      • 核心功能
      • monitor功能
    • 架构
  • Uboot准备
  • Uboot移植
  • Uboot 编译
    • 编译错误问题
  • 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框图如下:
智能路由器操作系统openwrt 之二 uboot开发_第1张图片

后面将简介整个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项 选择
智能路由器操作系统openwrt 之二 uboot开发_第2张图片

Uboot 编译

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

编译错误问题

Uboot 开发

提问、交流—公众号

智能路由器操作系统openwrt 之二 uboot开发_第3张图片

你可能感兴趣的:(linux)