一、 嵌入式的定义
嵌入式即嵌入式系统,IEEE(美国电气和电子工程师协会)对其定义是用于控制、监视或者辅助操作机器和设备的装置,是一种专用的计算机系统。
国内普遍所理解的嵌入式为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、功耗、成本及体积有严格要求的专用计算机系统。
二、 从技术上区分嵌入式
从技术上区分嵌入式可将嵌入式分为两种:有操作系统的和没有操作系统的。
没有操作系统:也称为裸机开发。一般可分为硬件层、驱动层、应用层。
有操作系统:相较与裸机,分为:硬件层、驱动层、应用层、系统层。
三、 嵌入式开发
一般来说,嵌入式开发分为嵌入式硬件开发 、 嵌入式软件开发 、 嵌入式驱动开发 、 嵌入式系统开发。
嵌入式系统软件开发
与普通软件开发的区别
是否需要操作系统一般采用Linux系统配套下的开发工具和开发平台。
程序编译和程序执行是在两个平台
存在host端和target端,需要交叉编译
输入/输出的界面不同 • 可利用的资源非常有限
常常要和硬件打交道
build、host和target
在交叉编译中比较 常见 的一些参数就是build、host和target了,正确的理解这三者的含义对于交叉编译是非常重要的,下面就此进行解释
--build=编译该软件所使用的平台
--host=该软件将运行的平台
--target=该软件所处理的目标平台
我们以 gcc 为例子来 讲解 这三者的作用
在gcc编译中我们使用
./configure --build=编译平台 --host=运行平台 --target=目标平台 [各种编译参数]
来配置gcc的源代码,以让其编译出我们需要的gcc编译器。
build:自动测试在用平台名称,若无法检测出来则需要指定。
host:若无指定,自动使用build的结果。
build和host相同时表示本地编译,若不相同则表示交叉编译。
target:表示需要处理的目标平台名称,若无指定使用host相同名称,gcc、binutils等于平台指令相关软件有此参数,多数软件此参数无用处
嵌入式软件开发的一般步骤
1、操作系统移植
2、驱动程序 / BSP开发
3、应用程序开发
4、系统调试