Chinaunix首页 | 论坛 | 博客
  • 博客访问: 816759
  • 博文数量: 117
  • 博客积分: 2583
  • 博客等级: 少校
  • 技术积分: 1953
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-06 22:58
个人简介

Coder

文章分类
文章存档

2013年(1)

2012年(10)

2011年(12)

2010年(77)

2009年(13)

2008年(4)

分类: 嵌入式

2010-01-24 00:40:40


启动代码一般都是与平台关系极为密切的,面对一个SoC上数量众多的硬件设备,实在是有些让人害怕。但是,事实上,这所有的硬件都必须要在编写启动代码的时候进行深入透彻的研究的。有许许多多的硬件并不是在启动的过程中必须要使用的,所以可以暂时先不去考虑。这样的话应该是可以降低一点问题的复杂度,为我们对bootloader的研究减小一点难度的。在将Boot loader和操作系统移植到板子上之后,再借助于操作系统提供的各种各样的驱动程序的模型,来为这些设备编写驱动程序从而来支持对这些设备的使用。(前提是在移植操作系统时要将内核配置为支持可加载模块)与ARM系统的启动特别相关的硬件,也就是在启动代码中不得不进行处理的硬件,或者说对于一个启动代码或者操作系统的开发者来说,想逃都逃不掉而不得不去好好理解的硬件,主要有:

1、看门狗
第一个应该处理的当然应该是看门狗。先关掉看门狗,就可以省得回头机器莫名其妙的就重启了。
2、存储器控制器
在存储控制器初始化之前,外接的内存都是不能够使用的,所以必须及早初始化内存,为bootloader提供内存上的支持,以满足bootloader的内存需要,以此来支持bootloader复杂功能的实现。
3、内存管理单元MMU
基本上在启动代码中要做的就是关闭MMU,关闭数据cache,关闭指令cache可选。
4、NAND Flash控制器
通常情况下,操作系统和文件系统是会安装在Flash上的,所以bootloader是要访问Flash的。
5、UART
对于裸机代码的调试,UART从来都是极为重要的。而且,bootloader还有可能要使用UART来下载文件等。
6、系统时钟的设置
设定系统的运行速度。
中断的体系结构


阅读(846) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~