boot loader:看名字就知道,这是在系统启动时使用的,最重要的功能架构
就是加载操做系统。其它包括一些硬件的初始化,或者其它的一些自定义功函数
能,例如OS升级什么的。 启动流程: 通常的arm/MIPS 架构的CPU都操作系统
有一个固定的地址,硬件上电后,CPU就去这个地址读取第一条指令。 接口
一般硬件上都会把这个地址链接在非易失存储器(简单的理解就是掉电不丢内存
失,通常是FLASH)上。也就是说,这个阶段的代码都是运行在FLASH上的,get
因此,这个FLASH必须是能够随机访问的。这些代码一般都是汇编写成的,登录
初始化CPU,内存等等硬件相关的一些指令。 内存初始化完毕后,就可变量
以将代码拷贝到内存里了。在内存里运行,就能够写了,速度上也要快不少硬件
。 以后继续其它设备的初始化,好比串口,网口什么的。如今用不着的程序
设备不作初始化,等OS起来之后再说。 再日后就准备启动OS了。嵌入式
设备为了节省FLASH的容量,一般OS都是压缩过的,因此boot loader就必须
将OS从FLASH上,解压到内存当中去。而后跳转到OS在内存中的第一个函数
中去。这个地址就是双方约定好的了,由于boot loader并不关心OS究竟是
什么,它只管将CPU交给OS,它的使命就结束了。若是这个地址双方不一致
,那就完全悲剧了…… 设备驱动: 就是能够屏蔽硬件特性,让操
做系统中的应用程序能够更好的操做硬件。好比如今有一块屏,4*4个点阵
,单色。没有驱动的时候,我只要告诉硬件,在(0,0),(0,1),(0
,3),(0,4)这几个点亮一下,就能够在屏幕最上方显示一条线了。但
是应用程序不可能这样去作啊,不可能每一个字,每条线都用点阵去画吧。所
以,我就能够写一个程序,将点亮4个点封装成函数,第一个参数做为变量
,给操做系统。这样应用程序只须要调这个函数,就能够在任意地方画一条
横线了。字符显示也是相似的。那什么还要有操做系统呢,不直接给应用程
序?由于应用程序不须要关心硬件,这块屏可大可小,或者可显示多种颜色
。操做系统就是在中间做为标准,抽象出一个显示设备,底下是驱动跟硬件
配合,提供操做接口,上面是应用程序去调用接口。
在网上看到这篇好文章,但愿对大学有所帮助,呵呵!
更多内容欢迎交流:15238336542 qq:2905283896(宋老师)
欢迎登陆:www.edu118.com