========================
第一天学习内容,有很多自己理解然后写出来的,有错误以后改
正文开始:
嵌入式系统的特点:
1.面向特定的系统应用。
2.涉及面相当广、应用到生活的方方面面。
3.硬件与软件都有高度的可执行性。
4.生命周期相当长(后期系统升级,维护)
5.不具备本地开发功能,需要有专门的开发工具与环境。
嵌入式操作系统:
·实时性是它非常重要的特性。
ps:在工业控制领域,以及航空航天领域实时性尤为重要;在日常产品中,如mp3实时性的重要性有所降低,称为软实时。
嵌入式操作系统的分类(5种):
· 1、linux操作系统:发展快,应用多,使用的人和社区庞大。有多发行版本,可以通过修改内核,让它变成实时性操作系统。
· 2、us/os操作系统:典型的实时操作系统。
· 3、windowsCE
· 4、vxworks
· 5、QNX
操作系统的选择
- 考虑系统是否对硬件支持
- 考虑开发调试工具是否具备
- 考虑系统能否满足应用要求
API:application programming interface,应用程序接口。
通俗的讲就是:其他程序员写好的函数、库、对象、类等直接来通过命令调用,这样就是说使用了某个API。
嵌入式linux的开发环境
- 嵌入式开发的优点是体量小,软件和硬件都可以裁剪,使其在满足功能的情况下,器件尽可能小。在这样的要求下,其硬件资源是非常匮乏的:cpu频率低、外接口少(甚至没有鼠标键盘的接口)、内存过小、处理速度慢等等。因此,必须在另一台开发主机上进行软件的开发,在开发主机上写出程序,编译生成可执行文件,接着烧写到目标机中检验程序是否正确运行。这个过程就是交叉编译过程
嵌入式linux系统的开发要点
- 选择一个linux系统发行版本(一个合适的发行版本可以为开发者提供可靠的软件和完整的开发工具包)
- 熟悉开发环境和工具:交叉开发环境是linux系统开发的基本模型。linux环境配置、GNU工具链、测试工具以及集成开发环境都是linux开发利器。
- 熟悉linux内核:嵌入式linux开发一般都需要重新定制内核,应熟悉内核配置、编译和移植。
- 熟悉目标板的引导方式:开发板的BootLoader负责硬件平台的最基本的初始化,并且具备引导linux内核启动的功能。(由于硬件平台是专门定制的,一般需要修改编译BootLoader)
- 熟悉linux根文件系统:linux中的文件和应用都存放在文件系统中。系统启动所需的程序和文件也在文件系统中,而linux的命令行可以指定需要挂载的根文件系统
- 理解linux内存模型:linux是保护模式的操作系统。内核与应用程序分别运行在完全隔离的虚拟空间地址。物理地址必须映射到虚拟地址才能访问。只有理解linux内存模型才能最大程度地优化系统性能。
- 理解linux调度机制和进程、线程编译:linux调度机制影响到了任务的实时性,理解调度机制可以更好地运用任务的优先级。进程和线程编程则是应用程序开发所必需的。