bootstrap简单介绍
来源:互联网 发布:王力宏 唱功 知乎 编辑:程序博客网 时间:2024/06/14 07:06
bootstrap 是最初級的引導,旨在初始化CPU,簡單時鐘,堆椎,目標是讓CPU處於可以正常運行\r
咱通常說的uboot那樣的bootloader實際上是集成了很多功能及驅動的程式,如串口,網絡等,目的是為加載和調試kernel創建一個良好環境
基于ARM的嵌入式系统的启动都需要引导程序,引导过程可以有两种,一种是先运行小型的bootstrap完成所谓的low level初始化,再调用如Uboot,RedBOOT等功能强大的引导程序进行全面的初始化,设置操作系统内核的加载地址和运行参数等等;另外一种是直接使用Uboot等引导程序两步合成一步完成。bootstrap只是针对ARM CPU进行初始化,直接根据芯片的引脚打交道,不涉及norflash,nandflah,SDRAM 等设备的驱动程序,所以整个程序比较简明易懂;而UBOOT比较庞大,对于初学者而言想一下子完全弄清楚整个脉络,知道移植时候需要在何处增加什么代码是很有难度的,所以建议入门者还是先采用这种分两层引导的结构。下面对ATMEL官方提供的基于at91sam9260的bootstrap进行简要分析。
bootstrap的结构有点类似于UBOOT,其中crt0_gnu.S完成的功能和UBOOT中cpu/arm926ejs下的start.S类似:设置ARM中断向量,如果定义了norflash启动则将bootstrap搬移到SDRAM中,然后设置始终,初始化数据段,bss段,最后跳转到main.c执行。main.c首先调用hw_init()完成硬件初始化,该部分主要任务完成DEBUG串口配置,这样就可以同串口输出在PC的超级中断上看到运行信息了;接下来配置禁用看门狗后配置时钟和PLL,这个部分的数据很重要,需要仔细查阅数据手册;然后是SDRAM控制器参数设定和协处理器CP15的设置;其次是SDRAM的初始化,主要是根据电路连接设置GPIO的功能。main.c的第二步是根据选择的启动方式复制印象文件到SDRAM中,根据设置的启方式初始化NORFLASH ,NANDFLASH或者是DATAFLASH。第三部分根据需要解压缩映像文件。然后跳转到定义的内核运行地址运行。到此bootstrap功德圆满。
通过对bootstrap源码的阅读有助于理解ARM的启动过程,为裁剪和移植UBOOT源码打下基础。嵌入式的学习还长路漫漫,先写到这,继续学习^_^!
0 0
- bootstrap简单介绍
- Android使用bootstrap简单介绍
- Bootstrap 全局样式的简单介绍
- BootStrap简单介绍及案例分享
- Bootstrap介绍
- BootStrap介绍
- bootstrap介绍
- bootstrap介绍
- Bootstrap介绍
- BootStrap介绍
- bootstrap介绍:
- bootstrap@twitter使用介绍
- 【前端框架Bootstrap】 介绍
- Twitter Bootstrap 框架介绍
- Bootstrap介绍and入门
- Bootstrap介绍1
- BootStrap 前端框架介绍
- Bootstrap表单介绍
- ARM-Linux系统调用(http://my.oschina.net/raybin/blog/100379)
- 没有USB3.0先提升一下USB2.0的速度
- wget同时获得文件实体和http header
- 你扔过来的沟通最简单
- java的Calendar(日历)类
- bootstrap简单介绍
- Bash下Ctrl-C、Ctrl-D和Ctrl-Z的区别
- NSOrderedSame NSOrderedAscending NSOrderedDescending应用
- curl - Bug
- Linux & Windows TLS实现 (http://blog.csdn.net/manjian/article/details/7053207)
- Online App
- Java 位运算符
- IAR各个版本下载地址
- JS验证.net 文本输入值