下载此文档

U-boot启动流程.doc


文档分类:IT计算机 | 页数:约36页 举报非法文档有奖
1/36
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/36 下载此文档
文档列表 文档介绍
U-Boot工作过程 U-Boot启动内核的过程可以分为两个阶段,两个阶段的功能如下: (1)第一阶段的功能Ø 硬件设备初始化Ø 加载U-Boot第二阶段代码到RAM空间Ø 设置好栈Ø 跳转到第二阶段代码入口 (2)第二阶段的功能Ø 初始化本阶段使用的硬件设备Ø 检测系统内存映射Ø 将内核从Flash读取到RAM中Ø 为内核设置启动参数Ø 调用内核            U-Boot启动第一阶段代码分析 第一阶段对应的文件是cpu/arm920t/。 U-Boot启动第一阶段流程如下: 图U-Boot启动第一阶段流程  根据cpu/arm920t/:ENTRY(_start)SECTIONS{ .=0x00000000;  .=ALIGN(4); .text: { cpu/arm920t/ (.text) board/samsung/mini2440/(.text) board/samsung/mini2440/(.text) *(.text) } ……} 第一个链接的是cpu/arm920t/,,其源代码在cpu/arm920t/。下面我们来分析cpu/arm920t/。1.     硬件设备初始化(1)设置异常向量 cpu/arm920t/:.globl_start_start: b start_code /*复位 */ ldr pc,_undefined_instruction /* 未定义指令向量*/ ldr pc,_software_interrupt /* 软件中断向量*/ ldr pc,_prefetch_abort /*预取指令异常向量*/ ldr pc,_data_abort /* 数据操作异常向量*/ ldr pc,_not_used /*未使用*/ ldr pc,_irq /*irq中断向量*/ ldr pc,_fiq /*fiq中断向量*//*中断向量表入口地址*/_undefined_instruction: .wordundefined_instruction_software_interrupt: .wordsoftware_interrupt_prefetch_abort: .wordprefetch_abort_data_abort: .worddata_abort_not_used: .wordnot_used_irq: .wordirq_fiq: .wordfiq  .balignl16,0xdeadbeef  以上代码设置了ARM异常向量表,各个异常向量介绍如下:表ARM异常向量表地址 异常 进入模式描述0x00000000 复位管理模式复位电平有效时,产生复位异常,程序跳转到复位处理程序处执行0x00000004 未定义指令未定义模式遇到不能处理的指令时,产生未定义指令异常0x00000008软件中断管理模式执行SWI指令产生,用于用户模式下的程序调用特权操作指令0x0000000c预存指令中止模式处理器预取指令的地址不存在,或该地址不允许当前指令访问,产生指令预取中止异常0x00000010数据操作中止模式处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常0x00000014未使用未使用未使用0x00000018IRQIRQ外部中断请求有效,且CPSR中的I位为0时,产生IRQ异常0x0000001cFIQFIQ快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常 在cpu/arm920t/。当一个异常产生时,CPU根据异常号在异常向量表中找到对应的异常向量,然后执行异常向量处的跳转指令,CPU就跳转到对应的异常处理程序执行。 其中复位异常向量的指令“b start_code”决定了U-Boot启动后将自动跳转到标号“start_code”处执行。(2)CPU进入SVC模式start_code: /* *setthecputoSVC32mode */ mrs r0,cpsr bic r0,r0,#0x1f /*工作模式位清零*/ orr r0,r0,#0xd3 /*工作模式位设置为“10011”(管理模式),并将中断禁止位和快中断禁止位置1*/ msr cpsr,r0 以上代码将CPU的工作模式位设置为管理模式,并将中断禁止位和快中断禁止位置一,从而屏蔽了IRQ和FIQ中断。(3)设置控制寄存器地址#ifdefined(CONFIG_S3C2400)#definepWTCON 0x15300000 #defineINTMSK 0x14400008 #defineCLKDIVN 0x14800014 #else /*s3c2410与s3c2440下面4个寄存器地址相同*/#definepWTCON 0x53000000 /*WATCHDOG控制寄存

U-boot启动流程 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数36
  • 收藏数0 收藏
  • 顶次数0
  • 上传人书犹药也
  • 文件大小321 KB
  • 时间2019-11-30