欢迎来到天天文库
浏览记录
ID:37410671
大小:746.11 KB
页数:93页
时间:2019-05-12
《嵌入式实时操作系统的移植》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、嵌入式系统设计与实例开发——ARM与C/OS-Ⅱ第五讲C/OS-Ⅱ移植分析和系统初始化北京航空航天大学嵌入式机电控制研究室提要12嵌入式系统的初始化C/OS-Ⅱ移植分析初始化程序的下载执行目标机宿主机1)通过编程器将可执行目标文件烧写到BootROM(ROM、EPROM、FLASH)等;2)通过串行口和网口下载执行目标文件,要求宿主机系统上有数据传输工具程序、目标机装载器、嵌入式监视器或目标机系统上的调试代理;3)通过JTAG或BDM接口下载。嵌入式系统的初始化过程嵌入式系统的初始化过程硬件初始化阶段1.复位向量ENTRYbResetHandler;fordebugbHa
2、ndlerUndef;handlerUndefbHandlerSWI;SWIinterrupthandlerbHandlerPabort;handlerPAbortbHandlerDabort;handlerDAbortb.;handlerReservedbHandlerIRQbHandlerFIQ嵌入式系统的初始化过程(2)硬件初始化阶段2.最小硬件初始化1)设置适当的寄存器,使嵌入式处理器处于一个已知的状态:获得CPU的类型。获得或设置CPU的时钟频率。2)禁止中断和高速缓存。3)初始化内存控制器、内存芯片和高速缓存单元,包括:得到内存的开始地址。得到内存的大小。如果有要求
3、,则还需要进行主存测试嵌入式系统的初始化过程(3)硬件初始化阶段3.其余硬件初始化引导代码调用合适的函数对目标机系统上的全部硬件部件进行初始化,包括:建立执行处理程序。初始化中断处理程序。初始化总线接口。初始化板级外设得到内存的开始地址。嵌入式系统的初始化过程(4)RTOS初始化阶段4.RTOS初始化1)RTOS初始化2)RTOS对象和服务初始化任务信号量定时器中断内存管理3)RTOS任务堆栈初始化4)RTOS扩展部件初始化5)启动RTOS嵌入式系统的初始化过程(5)应用程序初始化阶段5.应用程序初始化ARM7TDMI系统初始化的一般过程启动(系统上电/复位)从程序入口点关闭中
4、断初始化时钟等硬件相关寄存器初始化存储器系统初始化C所需要的存储器空间调用C入口函数一、设置程序入口指针上电复位后直接到程序入口点执行,入口点一般为一个跳转表,跳转到复位处理程序处开始执行ARM7TDMI系统的初始化。启动程序首先必须定义入口指针,而且整个应用程序只有一个入口指针。例:AREABoot,CODE,READONLYENTRY/*设置程序入口指针*/二、设置中断向量ARM要求中断向量必须设置在从OX00000000地址开始,连续8*4字节的地址空间。向量表包含一系列跳转指令,跳转到相应的中断服务程序。对各未用中断,使其指向一个含返回指令的哑函数,以防止错误中断引起系
5、统的混乱。中断向量表FIQ0x1C外部快速中断IRQ0x18一般外部中断(Reserved)0x14保留DataAbort0x10数据异常FrefetchAbort0x0C预取指异常Softwareint0x08软件中断Undef0x04未定义指令中断Reset0x00复位中断中断向量表的程序AREABoot,CODE,READONLYENTRYBReset_handlerBUndef_HandlerBSWI_HandlerBPreAbort_HandlerB.;forreservedinterrupt,stophereBIRQ_handlerBFIQ_handler三、初始化
6、时钟和设置相关的寄存器通过设置时钟控制器来确定CPU的工作频率,设置中断控制寄存器屏蔽中断。四、初始化存储器系统参考芯片手册,设置与内存映射相关的寄存器。五、初始化堆栈ARM处理器有好几种运行状态(模式),各种状态都需要有自己的堆栈,所以需要分别为这些堆栈分配空间并设置好各自的堆栈指针。如果系统使用了DRAM或其他外设,需要设置一些寄存器,以确定其刷新频率、数据总线宽度等信息。有的系统还需设置一些寄存器来控制SDRAM、USB、网络接口等。六、初始化C环境在目标文件中,代码、数据放在不同的段中。源文件编译链接生成含.data、.text段的目标文件,且链接器生成的.data段是
7、以系统RAM为参考地址。故在系统启动时需要复制ROM或FLASH中的.data段到RAM,以完成对RAM的初始化。在初始化期间应将系统需要读写的数据和变量从ROM复制到RAM里运行。链接器产生的符号表符号由链接器自动产生,只读段(read-onlyRO)就是代码段,读写段(read-writeRW)是已经初始化的全局变量,而零初始化段(zero-initializedsectionZI)中存放未初始化的全局变量。初始化C环境(2)C环境初始化,就是利用上述符号初始化RW和ZI段以使后面使用的
此文档下载收益归作者所有