嵌入式系统中的几个关键基本概念!
2014-05-03 00:00
239 查看
boot loader:看名字就知道,这是在系统启动时使用的,最重要的功能
就是加载操作系统。其它包括一些硬件的初始化,或者其它的一些自定义功
能,例如OS升级什么的。 启动流程: 一般的arm/MIPS 架构的CPU都
有一个固定的地址,硬件上电后,CPU就去这个地址读取第一条指令。
通常硬件上都会把这个地址连接在非易失存储器(简单的理解就是掉电不丢
失,一般是FLASH)上。也就是说,这个阶段的代码都是运行在FLASH上的,
所以,这个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
就是加载操作系统。其它包括一些硬件的初始化,或者其它的一些自定义功
能,例如OS升级什么的。 启动流程: 一般的arm/MIPS 架构的CPU都
有一个固定的地址,硬件上电后,CPU就去这个地址读取第一条指令。
通常硬件上都会把这个地址连接在非易失存储器(简单的理解就是掉电不丢
失,一般是FLASH)上。也就是说,这个阶段的代码都是运行在FLASH上的,
所以,这个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
相关文章推荐
- 音视频的几个基本概念
- 几个基本概念辨析:流敏感,路径敏感和上下文敏感
- 强化学习-几个基本概念
- 黑马程序员-JS基础知识回顾一------------几个基本概念
- 数据库中几个基本概念 主码 外码
- 链接与加载过程中,几个关键的概念
- Spark的几个基本概念:Driver和Job,Stage
- 路由的几个基本概念-直连路由/网关路由/主机路由/网络路由/动态路由/静态路由/默认路由
- 简明Python教程读书笔记-2 几个基本概念
- angular.js的几个基本概念
- 短信技术的几个基本概念
- ActiveMQ系列—JMS规范中的几个基本概念
- 高性能网络编程中的几个基本概念
- 关于J2EE Tranaction的几个基本概念
- LTE物理层几个基本概念的定义和相互关系 http://blog.sina.com.cn/s/blog_696122b50100n6df.html
- iphone绘图的几个基本概念CGPoint、CGSize、CGRect、CGRectMake、window(窗口)、视图(view)
- 几个基本概念
- C#几个基本概念
- 压力测试中需要掌握的几个基本概念
- 与构架有关的几个基本概念