丹尼斯·里奇,C语言之父,UNIX之父。
#
什么是嵌入式?
嵌入式即嵌入式系统,IEEE(美国电气和电子工程师协会)对其定义是用于控制、监视或者辅助操作机器和设备的装置,是一种专用的计算机系统;
#
嵌入式软件和非嵌入式软件有什么区别
最本质的区别:有无操作系统
比如微信QQ通过安卓操作系统进行软件的实现;而有些单片机,直接通过软件程序的编写对IO口的控制,进而控制硬件,中间不经过操作系统的处理。
#
操作系统
理论上说,大部分语言都可以用来写操作系统内核。
但是为什么大部分操作系统内核都只用C语言来写?因为目前所有的语言的开发环境里,C语言能做到编译成不依赖操作系统的形式二进制代码,C语言的各种脱离系统的库最丰富,最完整,C语言用来开发操作系统的工具最多。比如:如果内核中希望使用printf这个函数,那么内核就必须自己实现printf,而不是依赖标准库,因为标准库是要依赖操作系统来完成真正的printf操作。而这种库,C语言版本的最容易找到,其它语言要么没有,要么很难用。C语言有指针这样的数据类型对地址操作,能够直接访问硬件。
#
BSP,驱动,内核
而了解操作系统,其核心部分就不能忽视
- BSP:引导加载程序,支持操作系统,使之能够更好的运行于硬件主板。
- 驱动:让操作系统能在主板上跑起来了,怎么跑?就得提供一个规范,比如CPU,内存,显卡等这些硬件就得靠一个规范让操作系统去处理他们。只有理解了,操作系统和硬件、驱动的关系,才能移植操作系统!
- 内核:即操作系统的内部核心程序,内核程序是操作系统中最常使用基本模块,直接与硬件打交道,主要由用于管理存储器、文件、外设和系统资源的那些部分组成。(开发,添加都是用C语言)
#
操作系统的优点
- 多任务:你可以在操作系统上开很多的程序
- 可移植:很多软件比如QQ微信在相同操作系统的手机都可以下载
- 开发效率:提高开源工具,库和软件
- 实时性:规定的时间完成规定的任务
- 。。。。。。
#
嵌入式操作系统
商用
- Vxworks 不开源但接口开源
- WinCE 比如pos机
免费
- Linux 大概有4kw代码量
- UC/OS 大概有5k代码量
#
Linux
- GPL协议:任何人有共享和修改自由软件的自由,任何人有权取得、修改和重新发布只有软件的源代码权利,但都必须同时给出具体更改的源代码;
- POSIX标准:可移植操作系统接口
- GNU:GNU’s not unix。革奴计划。可以说就是一个软件集合,如:Emas,gcc,bash,gawk等。由于没有内核(可以理解成还在实验室里就GNU系统就被淘汰了)。