| |

iFix 爱修网

 找回密码
 注册

QQ登录

只需一步,快速开始

iFix爱修网知识星球,等待你的加入。。。
查看: 3637|回复: 2

请教大师引导和打印信息的关系

[复制链接]
发表于: 2017-1-2 23:16:54
| 显示全部楼层 |阅读模式
引导程序在主板上属于比较底层的软件,它的作用只有两个:
    1,初始化硬件。。在主板上电后,当CPU的基本工作条件满足后,CPU会按照引导程序的指令对主板的硬件比如DDR,各类寄存器,以及总线上的控制单元等进行初始化。初始化是硬件正常使用的关键条件,初始化不正常这个硬件就可能工作异常。
    2,引导系统内核。当引导程序完成硬件的初始化后,它剩下的最重要的任务就是将系统内核的镜像加载到DDR即内存中了。当引导程序把内核镜像加载到内存中后,经过简单的CPU使用权限移交,CPU就开始运行解压运行系统内核了~也就是说在CPU运行主程序之前,引导程序是完全控制CPU的使用权的!当权限移交后,引导程序在理论上也就没有任何作用了。
我的疑问是
1 引导和打印信息的关系  如果引导坏了 是不是有可能打印信息一个字都出不来?、
2 CPU会按照引导程序的指令 初始化DDR 寄存器 I2C总线上的设备  主板上有复位电路 还需要单独去初始化吗 初始化到哪个设备不正常打印信息会有显示吗  希望大家给予帮助
回复

使用道具 举报

发表于: 2017-1-15 01:28:17
| 显示全部楼层
引导程序说起来简单,但是实际上还是比较复杂的。关于第一个问题,你需要知道引导程序的详细工作过程才能明白。需要说明的是,为什么要有Boot Loader程序呢?原来,任何操作系统内核的调用都需要一个干净,正确的环境,而这个工作环境正是通过运行Boot Loader程序对硬件设备初始化,建立内存空间的映射图等方式而建立的。Boot Loader的启动模式通常是多阶段(Multi Stage)的,通常第一阶段(Stage1)大多是短小精悍且高度依赖于CPU体系结构的的汇编代码,而第二阶段(Stage2)则通常是用C语言来实现,这样可以实现更复杂的功能,同时也极大地提高了代码的可读性和可移植性。
Boot Loader 的 stage1 通常包括以下步骤(以执行的先后顺序):
硬件设备初始化。
为加载 Boot Loader 的 stage2 准备 RAM 空间。
拷贝 Boot Loader 的 stage2 到 RAM 空间中。
设置好堆栈。
跳转到 stage2 的 C 入口点。

Boot Loader 的 stage2 通常包括以下步骤(以执行的先后顺序):
初始化本阶段要使用到的硬件设备。
检测系统内存映射(memory map)。
将 kernel 映像和根文件系统映像从 flash 上读到 RAM 空间中。
为内核设置启动参数。
调用内核。
Boot Loader 的 stage1硬件设备初始化通常包含以下几个步骤:1)设置异常向量表,当一个异常产生时,CPU根据异常信号在异常向量表中找到对应的异常向量,然后执行异常向量处的跳转指令,CPU就跳转并执行相对应的异常处理程序。
2)设置CPU的工作模式和屏蔽中断,通过start_code代码段指令将CPU工作模式设置为SVC32(也就是管理模式),并且将中断禁止位和快中断禁止位置一,从而屏蔽IRQ(中断请求)和FIQ(快速中断请求)中断。
3)设置CPU的控制寄存器地址,通过相应代码段指令完成对WATCHDOG、INTMSK、INTSUBMSK、CLKDIVN这四个寄存器的地址设置从而完成相应硬件的初始化操作。
4)关闭看门狗,通过注入代码向看门狗控制寄存器(WATCHDOG)写入0从而关闭看门狗,防止在U_Boot启动过程中CPU不断重启引起系统死机。
5)通过操作INTMSK、INTSUBMSK控制寄存器从而屏蔽所有中断。
6)通过设置CLKDIVN、MPLLCON和UPLLCON寄存器设置CPU的速度和时钟频率,当CPU上电几毫秒后,晶振输出稳定,FCLK(供给CPU内核的时钟信号)=Fin(晶振频率),CPU开始执行指令。此时的工作频率不是最佳的,实际上,FCLK可以为晶振初始频率的倍率,为了提高系统时钟需要通过软件设置相应寄存器的方式启用PLL从而达到倍频的目的。
7)通过设置C0、C1、C7、C8控制寄存器关闭MMU和Cache。MMU和cache在CPU初始化时是不需要使用的,同时也因为使用这两项功能时是需要一系列的复杂配置才能使其正常工作的,所以要关闭它们。
8)使能UART0。
9)初始化定时器。
10)初始化控制台,使其可通过UART查看信息。
11)初始化RAM控制寄存器,通过lowlevel_init初始化代码将SMRDATA开始的13个值复制给开始地址【BWSCON】的13个寄存器,从而完成存储控制器的设置。至此,硬件初始化基本完成!
回复 支持 反对

使用道具 举报

 楼主| 发表于: 2017-1-16 23:00:35
| 显示全部楼层
宋亚军 发表于 2017-1-15 01:28
引导程序说起来简单,但是实际上还是比较复杂的。关于第一个问题,你需要知道引导程序的详细工作过程才能明 ...

谢谢您的解答
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|||iFix 爱修网 ( 粤ICP备2021135374号 )

粤公网安备 44060602002064号

GMT+8, 2024-3-29 08:59 , Processed in 0.054522 sec., 9 queries .

Powered by Discuz! X3.4

Release 20191201, © 2001-2024 Comsenz Inc.

MultiLingual version, Rev. 850, © 2009-2024 codersclub.org

快速回复 返回顶部 返回列表