u-boot分析之启动简介(一)

目录

u-boot启动简介(一)


u-boot启动简介(一)

启动概述

==U-boot的终极目的,是从FLASH中读出内核,加载到SDRAM中==

系统    
WinBIOS引导win识别C盘等运行应用程序
LinuxBootloader引导启动linux内核挂载根文件系统运行应用程序

 

==阶段一引导==

这里包含芯片自身的引导,BIOS固件的引导,以及bootloader的引导,jz2440这里首先可能有4ksram的搬运,然后执行sram的程序,或者直接是Bootloader.所以Bootloader目的就是加载内核,传递内核参数

==阶段二Linux内核==

内核的启动参数分为固定参数和Bootloader传递参数.

==阶段三文件系统==

应用程序都是存放在文件系统上的,不像win的C盘D盘,linux的目录结构就是一个树形,树形的顶部也就是/,这个称之为根文件系统,根文件系统有一些特殊的含义,比如shell命令等都是在根文件系统中存放的.

文件系统包含了应用程序,以及库,和动态链接需要的glibc或者Uclibc等.

==阶段四应用程序==

跑到这里,就是我们自己的应用程序执行的时候了.

内部存储布局

常见的内部空间布局如下:

BootloaderBoot parametersKernelRoot filesystem
u-boot,它会在内存的某个地方存放着内核启动的一些参数,也称为tagu-boot 参数,包含传递给内核的一些东西内核根文件系统

Bootloader概述

一般情况下,Bootloader分为两个阶段,第一个阶段为汇编阶段,我理解为为C语言提供环境.第二个阶段就是C语言的阶段,实现复杂的功能.

  • Bootloader第一阶段功能(汇编实现):完成一些依赖于CPU体系结构的初始化,并调用第二阶段代码
    • 硬件初始化,比如关WATCHDOG,关中断,设置CPU速度和时钟频率(这个也可以在C阶段)
    • 如果Bootloader需要在SDRAM中运行,则需要①sdram驱动②搬运代码到sdram
    • 设置C函数调用、运算所需要的栈(Sp)
  • Bootloader第二阶段功能(C实现):完成更复杂功能,代码有更好的可读性和可移植性
    • 初始化本阶段要使用到的硬件设备
    • ==检测系统内存映射==,这里指的是确定板上使用了多少内存、它们的地址空间是什么,告诉内核
    • 读取内核
    • 读取根文件系统,有些格式的根文件系统不需要复制到RAM
    • 为内核设置启动参数
    • 调用内核
  • uboot启动内核之前要满足以下条件
  • (一)CPU寄存器的设置

1,内核入口函数有三个参数,所以R0=0,R1=机器ID,R2=启动参数的内存地址

  • (二)CPU工作模式

1,禁止中断(IRQs和FIQs)

2,CPU处于SVC模式

  • (三)Cache和MMU的设置

1,MMU必须关闭

2,指令cache不相关

3,数据Cache关闭

内核启动参数 tagged list

内核是这么读取参数的:

  1. 先判断是什么类型的参数,长度为多少
  2. 将读取指定长度的内容识别为该格式的参数

所以很自然的,内存单元的参数就是

size
tag
data

体验一下实际的Uboot

  1. 解压官方源码,注意这里是u-boot-1.1.6,不是u-boot-2012.04.01_100ask
  2. 使用补丁包
  3. 配置并编译
tar xjf u-boot-1.1.6.tar.bz2 
cd u-boot-1.1.6/
patch -p1 <../u-boot-1.1.6_jz2440.patch #p1表示忽略应用位置第一个父目录,具体参考diff补丁格式
make 100ask24x0_config
make
  1. 烧录,oflash到nandflash或者norflash
  2. 备份下补丁文件(压缩文件包)

U-boot的使用帮助

  1. 使用命令q退出菜单,命令menu进入菜单
  2. 使用help查看所有命令
  3. 退出菜单后可以使用或者help+具体命令来查看帮助
  4. 使用print或者printenv来查看环境变量,使用set命令来设置环境变量,比如使用倒计时时间 set bootdelay 8,注意需要最后使用save来保存

U-boot基本要求

核心功能

  1. 需要有FLASH读取的能力,内核存储在FLASH
  2. 能够操作SDRAM,将读取到的内核加载到SDRAM

需要以下程序模块

  1. 关看门狗,关中断,初始化时钟,初始化sdram,设置栈等其他基本操作
  2. 支持串口方便调试
  3. 读写FLASH
  4. 读写SDRAM
  5. 其他模块,比如网卡,USB等,支持内核烧写

 

转载:https://www.cnblogs.com/zongzi10010/p/10023658.html#u-boot一启动简介

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值