正在加载图片...
BOOT的一般步骤 设置中断向量表 ·设置中断向量表 ·每个中断只占据向量表中1个字的存储空间,放置一条ARM跳 转指令: 初始化存储设备 ·中断向量表的程序实现通常如下表示: AREA Boot,CODE,READONLY ·初始化堆栈 ENTRY B???ResetHandler ·初始化用户执行环境 B???UndefHandler ·调用主应用程序 -B? PreAbortHandler -B???DataAbortHandler -B B???IROHandler B???F .edu.cn 4m lboousic.edu.cn 5077 初始化存储设备 初始化堆栈 ·片上存储系统初始化 “鞋稀镜台 然后 (MPU): ,注意:不要切损现Use模式进行User模式的蛛栈议置 堆栈初始化的代码示例 片外存情系统初始化:如SDRAM初始化 一mrsr0,cpsr:读取cpsr寄存器的值 骏的都新验光a以外接一个 bcr0.rO,MODEMASK:把梳式位清零 orr r1.r0.#UNDEFMODE|NOINT 。共13个寄存器 msr cpsr_cxsf.r1 :UndefMode -位宽:BWSCON寄存瀑 -边sp,=UndefSta ·所速搜存钟花片的位真,.8、16、32等 堆栈地址的定义一般如下: -(_ISR_STARTADDRESS-0x1400) UserStack#1024=ield,定义一个数据域,长度为1024 一行扫捕到列扫描的延时 SVCStack 1024 一刷新率 BANKSIZE IRQStack ,模试设量 .edu.cn 51m .edu.cn 527m 初始化用户执行环境 基于ARM的开发环境 ·完成必要的从ROM到RAM的数据传输和内容 清零 -主要是把RO、RW、Z三段拷贝到指定的位置 ·一个ARM映像文件构成 -RO,代码段,可在ROM、RAM中 -RW,已初始化的全局变量,需在RAM中 ■ 一ZI,未初始化的全局变量,需在RAM中 ·调用主应用程序 IMPORT main -B???Main 5477BOOT的一般步骤 • 设置中断向量表 • 初始化存储设备 • 初始化堆栈 • 初始化用户执行环境 • 调用主应用程序 llxx@ustc.edu.cn 49/77 设置中断向量表 • 每个中断只占据向量表中1个字的存储空间,放置一条ARM跳 转指令; • 中断向量表的程序实现通常如下表示: • AREA Boot ,CODE, READONLY – ENTRY – B??? ResetHandler – B??? UndefHandler – B??? SWIHandler – B??? PreAbortHandler – B??? DataAbortHandler – B – B??? IRQHandler – B??? FIQHandler – 其中关键字ENTRY是指定编译器保留这段代码,因为编译器可能 会认为这是一段亢余代码而加以优化。链接的时候要确保这段代 码被链接在0地址处,并且作为整个程序的入口。 llxx@ustc.edu.cn 50/77 初始化存储设备 • 片上存储系统初始化 – 许多ARM处理器都有片上存储器系统,如cache和紧密耦合 存储器(TCM)、存储器管理单元(MMU)或存储器保护单元 (MPU)。 • 片外存储系统初始化:如SDRAM初始化 – TQ2440的地址分为0~7八个bank,每个bank可以外接一个 存储设备,初始化即初始化每个bank的寄存器 • 共13个寄存器 – 位宽:BWSCON寄存器 • 所连接存储芯片的位宽,8、16、32等 – bank0的位宽由硬件决定,不需要我们去配置 – bank1~7的宽度都是可以软件控制的 – 行扫描到列扫描的延时 – 刷新率 – BANKSIZE – 模式设置 llxx@ustc.edu.cn 51/77 初始化堆栈 • 对程序中需要用到的每一种模式都要给SP定义一个堆栈地址 – 方法:改变状态寄存器的状态位,使处理器切换到不同的状态,然后给 SP赋值。 • 注意:不要切换到User模式进行User模式的堆栈设置 • 堆栈初始化的代码示例 – mrs r0,cpsr ;读取cpsr寄存器的值 – bic r0,r0,#MODEMASK ;把模式位清零 – orr r1,r0,#UNDEFMODE|NOINT – msr cpsr_cxsf,r1 ;UndefMode – ldr sp,=UndefStack • 堆栈地址的定义一般如下: – ^ (_ISR_STARTADDRESS-0x1400) – UserStack # 1024 ;#=field,定义一个数据域,长度为1024 – SVCStack # 1024 – UndefStack # 1024 – AbortStack # 1024 – IRQStack # 1024 – FIQStack # 0 llxx@ustc.edu.cn 52/77 初始化用户执行环境 • 完成必要的从ROM到RAM的数据传输和内容 清零 – 主要是把RO、RW、ZI三段拷贝到指定的位置 • 一个ARM映像文件构成 – RO,代码段,可在ROM、RAM中 – RW,已初始化的全局变量,需在RAM中 – ZI,未初始化的全局变量,需在RAM中 • 调用主应用程序 – IMPORT main – B??? Main llxx@ustc.edu.cn 53/77 基于ARM的开发环境 llxx@ustc.edu.cn 54/77
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有