arm处理器启动流程

[复制链接]
1100|0
手机看帖
扫描二维码
随时随地手机跟帖
lbr023|  楼主 | 2019-9-3 17:24 | 显示全部楼层 |阅读模式
1)_start(arch/arm/lib/vector.Sb        reset   //关闭fiq irq中断, 设置为管理模式svc
2)reset(arch/arm/cpu/armv7/start.S
                bl        cpu_init_cp15   //禁止虚拟地址与物理地址间转换,关闭指令cache,关闭分支预取,关闭MMU
                bl        cpu_init_crit   //setup pll,mux,memory
                bl        _main
3)_main(arch\arm\lib\crt0.S
board_init_f (common\Board_f.c
                b        relocate_code
ldr        lr, =board_init_r(common/Board_r.c
run_main_loop()
                                main_loop()
4)main_loop()


例如uboot中LCD的初始化流程:

LCD的初始化流程:ENTRY(_main)-》board_init_f-》init_sequence_f-》board_init_r-》init_sequence_r-》stdio_add_devices-》

board_video_skip-》drv_video_init-》


一、arm处理器的异常和中断总共有7种:

按照响应优先级高到低依次是:reset复位、_data_abort数据中止、FIQ、IRQ、_prefetch_abort预取指令中止、_undefined_instruction未定义指令、SWI

中断向量表顺序:reset复位、_undefined_instruction未定义指令、SWI、_prefetch_abort预取指令中止、_data_abort数据中止、IRQ、FIQ

二、启动方式有2种:

1、Nor flash启动

Nor Flash的地址范围为:0x0000.0000—0x0800.0000 (2M Nor Flash)
片内的BootSRAM地址被置为:0x4000.0000—0x4000.DFFF (4K BootSRAM)
由于可以在Nor Flash直接运行代码,因此BootSRAM被映射到别的地址上去,可作为其他用途。
程序映像直接存放到NOR FLASH里面,中断向量表存放在0x0000.0000开始的8×4大小的空间中。
中断产生时,PC被置为相对应的向量地址。如上电或者按Reset键时,PC直接置为0x00,从NOR FLASH的0x00处开始执行。

2、nandflash启动

片内的BootSRAM地址被置为:0x0000.0000—0x0800.0000 (4K BootSRAM)
NAND Flash地址接NFCE
由于NAND Flash中不能运行代码,因此必须复制到内存之中再运行。
      程序映像存放在NAND FLASH中,中断向量表位置在程序映像的最前面。由于NAND FLASH不能运行代码,系统上电或者Reset的时候,内置的NAND FLASH 将访问控制接口,并将中断向量表和引导代码自动加载到内部SRAM(此时该SRAM 定位于起始地址空间0x00000000,容量为4KB),并且置PC值为0x00运行程序(这一切是有芯片内部的硬件逻辑完成的)。之后,SRAM 中的引导程序将操作系统镜像加载到SDRAM 中,操作系统就能够在SDRAM 中运行。启动完毕,4KB 的启动SRAM 就可以用于其他用途。
三、ARM处理器的7中工作模式和2种工作状态
1、2中工作状态
1) ARM状态:32位,ARM状态执行字对齐的32位ARM指令。
2)Thumb状态:16位,执行半字对齐的16位指令。
3)用Bx Rn指令来进行两种状态的切换
注:ARM的M系列主要用Thumb指令,ARM9和A系列主要用ARM指令
2、7种工作模式
1)用户模式(USR):正常程序执行模式,不能直接切换到其他模式
2)系统模式(SYS):运行操作系统的特权任务,与用户模式类似,但具有可以直接切换到其他模式等特权
3)快速中断模式(FIQ):支持高速数据传输及通道处理,FIQ异常响应时进入此模式
4) 一般中断模式(IRQ):用于通用中断处理,IRQ异常响应时进入此模式
5)管理模式(SVC):操作系统保护模式,系统复位和软件中断响应时进入此模式(由系统调用执行软中断SWI命令触发)
6)中止模式(ABT):用于支持虚拟内存和/或存储器保护,在ARM7TDMI没有大用处
7)未定义指令中止模式(UND):支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

2

粉丝