您的位置: 钦州信息港 > 育儿

在ARMSYS上进行uClinux内核移植的总结2

发布时间:2019-11-05 01:07:49

2.3 Bootloader的工作 完整的Bootloader引导流程可描述如下: 硬件初始化阶段一 ◎ 硬件初始化; ◎ 复制二级中断异常矢量表; ◎ 初始化各种处理器模式; ◎ 复制RO和RW,清零ZI (跳转到C代码入口函数)。 硬件初始化阶段二 ◎ 初始化本阶段使用到的硬件设备; ◎ 建立人机界面; ◎ 实现映像文件的下载和烧录工具; ◎ 实现映像文件的加载和运行工具。 下面对上述各步骤进行逐一说明,并对与uClinux相关的内容详细加以说明。 2.3.1 硬件初始化 板子上电或复位后,程序从位于地址0x0的Reset Exception Vector处开始执行,因此需要在这里放置Bootloader的条指令:b ResetHandler,跳转到标号为ResetHandler处进行阶段的硬件初始化,主要内容为:关Watchdog Timer,关中断,初始化PLL和时钟,初始化存储器控制器。比较重要的是PLL的输出频率要计算正确,ARMSYS中把它设置为64MHz;这实际上就是处理器的工作主频,这个时间参数在第二阶段计算SDRAM的刷新计数值和UART的波特率等参数时还要用到。 2.3.2 建立二级异常中断矢量表 异常中断矢量表(Exception Vector Table)是Bootloader与uClinux内核发生联系关键的地方之一。即使uClinux内核已经得到处理器的控制权运行,一旦发生中断,处理器还是会自动跳转到从0x0地址开始的级异常中断矢量表中的某个表项(依据于中断类型)处读取指令运行。 在编写Bootloader时,地址0x0处的一级异常中断矢量表只需简单地包含向二级异常中断矢量表的跳转指令就可以。这样,就能够正确地将发生的事件交给uClinux的中断处理程序来处理。对于uClinux内核,它在RAM空间中基地址为0xc000000处建立了自己的二级异常中断矢量表,因此,Bootloader的级异常中断矢量表如下所示: b ResetHandler ;Reset Handler ldr pc,=0x0c000004 ;Undefined Instruction Handler ldr pc,=0x0c000008 ;Software Interrupt Handler ldr pc,=0x0c00000c ;Prefetch Abort Handler ldr pc,=0x0c000010 ;Data Abort Handler b . ldr pc,=0x0c000018 ;IRQ Handler ldr pc,=0x0c00001c ;FIQ Handler LTORG

沈阳脑康中医院电话
长沙百佳玛丽亚医院赵艳琴
贵阳有哪些癫痫病医院
襄阳治疗输卵管堵塞费用
新乡治疗阳痿医院
猜你会喜欢的
猜你会喜欢的