嵌入式简述

最近和别人讨论什么是嵌入式,今天有感而发,说说自己的看法

嵌入式与传统计算机编程不同,嵌入式一般包括两个部分,硬件和软件,硬件是整个系统的躯体,软件则是整个系统的灵魂(如果身体是张三的,灵魂是李四的,灵魂绝对不好受,除非张三的躯体够强大,强大到谁来我都装的下)硬件上面是操作系统,而软件跑在操作系统上。嵌入式软件工程师也不容易啊,作为程序员的一种,人家一台电脑走天下,我们的工位上永远没干经过,不是板子就是设备,还有各种线,串口线,网线,电源线,还有好几个显示器,头疼!

首先说一下交叉编译,

写嵌入式软件必然要交叉编译,即在PC端编译好你的程序,然后烧到你的板子上运行(此处就会引出另一个话题,就是编译环境和运行环境吗,后文讲解),那么你所用的硬件平台不同,大概率会导致你的交叉编译工具链也不同(如果编译的交叉工具链和运行的链接器不搭配,程序会运行不起来),很多人会问,什么是交叉编译工具链,为什么需要他呢?

我们所说的开发板就是一台小型电脑,微处理器,他的性能肯定不如你手里的PC机强大, 所以嵌入式系统通常是一个资源受限的系统,因此直接在嵌入式系统的硬件平台上编写软件比较困难,所以我们一般采用的解决方法就是首先在统用计算机行编写程序,然后通过交叉编译工具编译生成目标平台上可以运行的二进制代码格式,最后再下载到目标平台上的特定位置上运行

交叉编译工具链详解:http://www.crifan.com/files/doc/docbook/cross_compile/release/html/cross_compile.html

编译环境;

编译环境通俗讲就是在什么地方写程序,一般就是PC机啦,嵌入式编译环境一般是Linux+GNU(gcc,g++),为什么是linux,linux开源啊,可以方便的裁剪,你不要的功能都可以拿掉,这对于性能相对PC机较差的开发板来说,不要太适合了,系统太大了占内存那多卡啊,负担太重了,为啥window不常用呢,因为如果板子上的OS是windows,对板子的性能要求就太高了,所以一般轻易不会用,至少我没见过。

说个百度百科:

嵌入式 Linux是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,近几年来已成为研究热点。目前正在开发的嵌入式系统中,有近50%的项目选择Linux作为嵌入式操作系统。 

嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。

嵌入式Linux的特点是版权费免费;购买费用媒介成本技术支持全世界的自由软件开发者提供支持网络特性免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,因为有许多公开的代码可以参考和移植,实时性能RT_Linux Hardhat Linux 等嵌入式Linux支持,实时性能稳定性好安全性好

再说运行环境

我相信很多人都遇到过,程序在PC机上运行的飞起,你瞅着它就赏心悦目,但是到板子上,哎呀,就是运行不起来,这个运行环境必须要和编译环境匹配,不然就太难过了,我经历过最痛苦的事儿就是交叉编译程序的依赖库,编译好导到板子上,这些运行库相互依赖,要一丝不苟的按照编译顺序编译,难啊,他的顺序我开始不知道,踩了好多坑,所以在搭建编译环境的时候,第一,运行环境的链接器一定要和程序编译器匹配,程序运行所需要的依赖库要编译好,放到板子里,不然也不行

 

你可能感兴趣的:(理论知识)