资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,嵌入式与手机体系结构,PC机启动全过程,嵌入式介绍,手机介绍,手机恢复与仿真器,计算机的分类-体系结构分类,计算机体系结构(Computer Architecture)是,程序员,所看到的计算机的,属性,,即概念性结构与功能特性,传统计算机采用冯诺依曼(Von Neumann)结构,也称普林斯顿结构,是一种将程序指令存储器和数据存储器并在一起的存储器结构。,哈佛(Harvard)结构是一种将程序指令存储和数据存储分开的存储器结构。,二种结构计算机的类型,哈佛结构的CPU 通常具有较高的执行效率。目前使用哈佛结构的 CPU 和微处理器有很多,除了所有的DSP 处理器,还有摩托罗拉公司的MC68系列、Zilog 公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11等。,冯诺依曼结构的 CPU 和微控制器有很多。其中包括英特尔公司的8086及其他CPU,ARM公司的ARM7、MIPS公司的MIPS处理器也采用了冯诺依曼结构。,ARM7与PC机的硬件是类似的,下面让我们熟悉一下PC机的开机过程(漫长),概念:,CPU、MEM、南桥、北桥、BIOS、CMOS,从BIOS开始的启动,引导(BOOT级),下面“言归正摇”,启动代码是嵌人式系统加电后令首先运行的一段程序。其主要任务是初始化目标程序映像(image)从ROM或Flash中拷贝RAM,然后跳转到主程序人口点运行,手机与ARM7,手机系统启动两个阶段,硬件阶段:一旦复位线有效(装电池或按“电源”键),处理器就进入到硬件复位阶段。此阶段的主要职责是给CPU上电,使CPU开始启动程序或运行一些要把CPU控制权转交给程序的代码。,软件阶段:此阶段的主要职责是初始化核心元件和内存的关键结构(用来建立完整的运行环境),加载执行已写入到ROM中的应用代码。,Bootloader程序建立中断表,手机所用ARM7处理器在加电或复位时,一般是从0地址处开始执行程序指令,而中断向量表通常也要求位于0地址处,且每个中断只占用一个字的存储空间。为了满足上述要求,Bootloader程序需要在0地址处建立中断向量表,并通过放置一条跳转指令来转到定义的中断处理指令处执行。,ARM处理器(V4架构以后的版本)共有7种执行模式,User:用户模式,FIQ:快速中断响应模式,IRQ:一般中断响应模式,Supervisor:超级模式,Abort:出错处理模式,Undef:未定义模式,System:系统模式,除用户模式以外,其他6种模式都是特权模式,启动过程分析和实现,1 复位中断向,设置:,在ARM体系中,从地址0 x0到0 x1c的32字节是异常中断向量表,分别是复位、未定义指令错误、软件中断、预取指令错误、FIQ。在分配给每个异常中断的4字节空间数据存取错误、保留的中断向童、IRQ和内放人跳转指令,使程序跳转到相应的中断处理程序处执行。当多个中断发生时,处理器根据中断优先级逐个处理。对于启动过程,加电时触发的是位于0 x0地址的复位Reset异常中断。bResetHandler语句可使CPU转向引导程序。,启动过程分析和实现,2 硬件初始化和堆栈设置,引导程序首先通过配置特殊控制器完成硬件初始化,包括关闭看门狗时钟、屏蔽所有中断,保证系统启动过程不受任何异常中断的影响。初始化PLL完成CPU工作频率的设置,通过设置BWSCON等控制寄存器完成系统外接SDRAM的初始化,包括外部数据总线宽度、访问周期、定时的控制信号等参数。,启动过程分析和实现,3 IRQ中断向量表的初始化,IRQ中断源,利用ICPR(中断示寄存器)、ICMR(中断屏蔽寄存器)、ICLR(中断级别设置寄存器)、ICIP(IRQ级别的中断源寄存器)等中断控制寄存器识别各个中断。在这些中断发生时,都会触发IRQ中断,这样在IRQ中断服务程序中,需判别各中断,并跳到相应的中断服务程序。启动阶段,在SDRAM高端地址内预留32X4字节的IRQ中断向量表,根据INTOFFSET值,获得各个IRQ中断源在向量表内的偏移地址,跳转执行中断服务程序。,启动过程分析和实现,4 主程序的拷贝,系统硬件正常工作后,则要将主程序的代码拷贝至SDRAM。在这一过程中,需注意:,(1)SDRAM的起始地址;,(2)清空并保证SDRAM内准备放主程序映像文件的存储空间可访问;,(3)Flash内主程序的映像文件在Flash中的起始和结束地址。,主程序在SDRAM中的位置取决于编译过程中设置的RO、RW段,的起始地址;在Flash中的位置则由映像文件烧写时的地址决定。,由于ARM在统一的地址空间内寻址存储设备,所以对主程序的拷贝,,可通过简单的循环读Flash的语句来实现。,启动过程分析和实现,5 跳入主程序入口处执行,如果主程序拷贝是在C环境下完成,且从0 x30000000开始执行,则#defineRAM_Addr0 x30000000,void(*Run)(void)=(void(*)(void)RAM_Addr;,Run();,这些语句即可实现跳转功能;,启动过程分析和实现,当引导程序比较复杂,如涉及操作系统内核引导等时,引导程序可分2步进行:,第一部分引导代码在Flash内运行,把较复杂的第二部分引导拷贝到RAM内,在RAM中完成全部引导工作。这样在整个引导过程要完成2次文件在Flash与RAM之间的拷贝。,Real-Multi-ICE ARM通用型实时在线仿真器,主机和目标系统交叉开发模型,主机和目标机之间通过调试设备(BDM/JTAG 仿真器)相连接,应用程序在主机的Windows环境下编译链接生成可执行文件,下载到目标机,通过主机上的调试软件和连接到目标机上的调试设备完成对应用程序的调试、分析。,支持的主机操作系统:Windows98/NT/Me/2000/XP和X86 RedHat Linux6.2/7.1/7.2/8.0/9.0。,支持的目标处理器:ARM全系列。,Multi-ICE是ARM公司自己的JTAG在线仿真器,目前的最新版本是2.1版。,Multi-ICE的JTAG链时钟可以设置为5kHz到10MHz,实现JTAG操作的一些简单逻辑由FPGA实现,使得并行口的通信量最小,提高系统的性能。Multi-ICE硬件支持低至1V的电压。Multi-ICE2.1还可以外部供电,不需要消耗目标系统的电源,这对调试类似手机等便携式、电池供电设备是很重要的。,Multi-ICE2.x支持该公司的实时调试工具MultiTrace,MultiTrace包含一个处理器,因此可以跟踪触发点前后的轨迹,并且可以在不终止后台任务的同时对前台任务进行调试,在微处理器运行时改变存储器的内容,所有这些特性使延时降到最低。,Real-Multi-ICE ARM通用型实时在线仿真器,ARM 上的系统,Linux/uClinux自身具备一整套工具链(GNUGCC),包括编译和调试工具,用户可以自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越在嵌入式系统开发中仿真工具(ICE)的障碍。,谢谢,
展开阅读全文