ARM处理器启动流程
2016-03-12 23:13
246 查看
1.启动方式
(1)norflash:2MB,从norflash的0地址处开始运行第一条代码,所以代码一定要放在norflash的最前端
(2)nandflash:128MB,但是nandflash没有参与同一编址,不能直接访问,需要访问特殊寄存器才可以访问,所以要从片内的4KB的boot SRAM开始执行,即0地址是排放boot sram(stepping stone),上电之后处理器自动将nandflash前4KB的内容复制到boot sram开始执行,通过bootsram来初始化相关硬件和寄存器从而访问nandflash,接下来把剩余的bootloader复制到内存(SDRAM/DRAM)中,当stepping stone 里面的4KB执行完以后跳转到内存继续执行,再接下来将内核复制到内存,从而启动操作系统。而内存要求从0x30000000开始band6开始(2440)
2.地址布局
关键词:mapping3.具体流程
关键词:booting
4.SROM也就是norflash
oneNAND既有nor的特性也有nand的特性
5.6410还支持MODEM启动
6.SD卡和nand都划归为IROM:处理器内部的固件/存储器,但不是stepping stone
7.6410地址布局
8.6410的0地址处开始是镜像区,不放置任何设备,是通过映射关系将其他设备映射到镜像区域。根据启动方式不同可以映射到不同设备。
9.6410的nandflash启动属于irom的一种,而irom里面存放的是厂商给用户写好的一些软件,如bootloader0,上电后就是取irom里面的程序来执行。通过BL0(bootloader0)将nand的前8KB拷贝到stepping stone运行,然后和2440类似。
10. 210和6410类似,都支持从irom启动,nand启动是其中的一种。但是在210中stepping stone叫做IRAM,有96KB,由于垫脚石的增大,会拷贝bootloader 2 到垫脚石,而不是直接到内存。一般情况BL1最大是16KB,BL2最大尺寸是80KB。若BL2大于80KB,则要求BL1将BL2直接拷贝到内存,而不能拷贝到垫脚石。0地址也是镜像区域,通过映射关系取代码。
11.210的启动流程(BL0是厂商写好的)
12.210的地址布局
(1)norflash:2MB,从norflash的0地址处开始运行第一条代码,所以代码一定要放在norflash的最前端
(2)nandflash:128MB,但是nandflash没有参与同一编址,不能直接访问,需要访问特殊寄存器才可以访问,所以要从片内的4KB的boot SRAM开始执行,即0地址是排放boot sram(stepping stone),上电之后处理器自动将nandflash前4KB的内容复制到boot sram开始执行,通过bootsram来初始化相关硬件和寄存器从而访问nandflash,接下来把剩余的bootloader复制到内存(SDRAM/DRAM)中,当stepping stone 里面的4KB执行完以后跳转到内存继续执行,再接下来将内核复制到内存,从而启动操作系统。而内存要求从0x30000000开始band6开始(2440)
2.地址布局
关键词:mapping3.具体流程
关键词:booting
4.SROM也就是norflash
oneNAND既有nor的特性也有nand的特性
5.6410还支持MODEM启动
6.SD卡和nand都划归为IROM:处理器内部的固件/存储器,但不是stepping stone
7.6410地址布局
8.6410的0地址处开始是镜像区,不放置任何设备,是通过映射关系将其他设备映射到镜像区域。根据启动方式不同可以映射到不同设备。
9.6410的nandflash启动属于irom的一种,而irom里面存放的是厂商给用户写好的一些软件,如bootloader0,上电后就是取irom里面的程序来执行。通过BL0(bootloader0)将nand的前8KB拷贝到stepping stone运行,然后和2440类似。
10. 210和6410类似,都支持从irom启动,nand启动是其中的一种。但是在210中stepping stone叫做IRAM,有96KB,由于垫脚石的增大,会拷贝bootloader 2 到垫脚石,而不是直接到内存。一般情况BL1最大是16KB,BL2最大尺寸是80KB。若BL2大于80KB,则要求BL1将BL2直接拷贝到内存,而不能拷贝到垫脚石。0地址也是镜像区域,通过映射关系取代码。
11.210的启动流程(BL0是厂商写好的)
12.210的地址布局
相关文章推荐
- 微软发布紧急更新:修复Flash高危漏洞
- 如何看待科技、数据和业务?
- unicode码转换汉字显示
- Java NIO Pipe
- C++处理异常技巧-try,catch,throw,finally
- C++ const用法 尽可能使用const
- python tkinter界面中添加按钮的方法
- PHP笔记
- 企业是怎么给MYSQL赋予用户权限
- 视觉直观感受 7 种常用的排序算法
- banq 质疑Lambda架构
- cocos2d-x之利用富文本控件遍历xml
- 优雅地调查删除你微信的人
- 约瑟夫问题与变形
- shell 实现统计一个网段的IP和mac对应关系并保存到文件mac.txt
- C++ 自定义namespace的使用技巧 http://jingyan.baidu.com/article/b7001fe19399fa0e7282ddb3.html
- Java NIO DatagramChannel
- 四轴飞行器建模和控制(二)
- Docker 开源管理工具集锦
- HDU 5644 King's Pilots 费用流