我对嵌入式软件的理解
2015-08-19 11:09
253 查看
嵌入式软件就是给专门的嵌入式系统设计的软件,和一般的PC软件差别不是很大,主要的区别在嵌入式系统对功耗和内存大小上有严格的限制,所以嵌入式软件一定要精简,高效。
一个嵌入式系统一般都包含以下几个部分:cpu,存储器,电源,接口,功能模块电路。而嵌入式软件就是用来驱动硬件工作以达到系统的工作目的。
由于嵌入式系统的内存有限,所以软件大部分是由C写的,因为C++,java等语言虽然方便,但是很费内存,但是随着存储器的变革,C++最终会取代C的。
作为一个嵌入式软件工程师,需要了解一下一些知识:
1.C是必须会的,而且水平要比较高。嵌入式软件的编程用到很多C里面平时不常用的语法,比如内联,静态等。以及要清楚所有数据类型所占用的内存。
2.会看懂英文用户手册和硬件原理。应为这方面的很多硬件都是外国生产的,所以要能看懂这些文档。对于软件工程师来说,硬件就是一堆寄存器,所以你要看懂硬件里有哪些寄存器,每个有什么作用。
3.会一些UI的设计,虽然这方面一般都有专业做界面的人去做,但是也要会一点。
4.知道如何将软件一直到新的处理器架构上,这个要了解主流的处理器架构的特性。
5.知道如何调试自己的程序,仿真调试或者片上调试,反正就那几个调试方法。
6.高级的嵌入式系统需要RTOS,所以也要懂操作系统。
嵌入式软件一层一层的覆盖在硬件上的,最底层的应该是硬件层,这一层直接对硬件的寄存器操作,是对硬件的第一层抽象。然后应该是驱动层,这一层提供一些硬件的功能函数。最后是接口层,这一层提供最终的函数给上一层的工程师,例如ledLight()这种函数,上层的人可以直接用这个函数来点亮led,而不用知道下面的细节。
这只是我片面的理解,如果有什么不对的地方请指出来。
一个嵌入式系统一般都包含以下几个部分:cpu,存储器,电源,接口,功能模块电路。而嵌入式软件就是用来驱动硬件工作以达到系统的工作目的。
由于嵌入式系统的内存有限,所以软件大部分是由C写的,因为C++,java等语言虽然方便,但是很费内存,但是随着存储器的变革,C++最终会取代C的。
作为一个嵌入式软件工程师,需要了解一下一些知识:
1.C是必须会的,而且水平要比较高。嵌入式软件的编程用到很多C里面平时不常用的语法,比如内联,静态等。以及要清楚所有数据类型所占用的内存。
2.会看懂英文用户手册和硬件原理。应为这方面的很多硬件都是外国生产的,所以要能看懂这些文档。对于软件工程师来说,硬件就是一堆寄存器,所以你要看懂硬件里有哪些寄存器,每个有什么作用。
3.会一些UI的设计,虽然这方面一般都有专业做界面的人去做,但是也要会一点。
4.知道如何将软件一直到新的处理器架构上,这个要了解主流的处理器架构的特性。
5.知道如何调试自己的程序,仿真调试或者片上调试,反正就那几个调试方法。
6.高级的嵌入式系统需要RTOS,所以也要懂操作系统。
嵌入式软件一层一层的覆盖在硬件上的,最底层的应该是硬件层,这一层直接对硬件的寄存器操作,是对硬件的第一层抽象。然后应该是驱动层,这一层提供一些硬件的功能函数。最后是接口层,这一层提供最终的函数给上一层的工程师,例如ledLight()这种函数,上层的人可以直接用这个函数来点亮led,而不用知道下面的细节。
这只是我片面的理解,如果有什么不对的地方请指出来。
相关文章推荐
- 批量自动安装常用软件
- 批量自动安装常用软件
- 企业批量部署RealVNC远程控制软件
- 好用的Markdown编辑器一览
- 网上视频站 视频下载利器 优酷网 视频下载 必备 软件 下载[原创]_常用工具_脚本之家
- BAT批处理实现软件的自动安装(以搜狗拼音为例)
- nw.js实现类似微信的聊天软件
- 采用C#实现软件自动更新的方法
- C#判断某个软件是否已安装实现代码分享
- IIS 防盗链 软件
- android判断软件是否第一次运行的方法
- Python实现的二维码生成小软件
- 【转】对软件产品化的理解
- 我的 ARM+Linux 学习路线
- System Silencer – 离开时 让电脑自动开始任务
- 开发学习记录之看门狗驱动
- 时钟+温度+遥控设置,综合时钟例子
- 月光微博客
- 月光微博客