1.学习嵌入式软件开发的目的是什么?
基于嵌入式硬件平台(非标准PC)的程序开发,包括应用程序和驱动程序,应用于各个领域,服务于消费者。
A.裸板开发
嵌入式硬件平台没有操作系统的支持,也没有任何库的支持,所有程序都需要自己开发。实现相对简单的程序,比较容易,如果实现一些复杂的程序,对于程序员的要求就非常高,需要既懂软件,又懂硬件,难度非常大。
B.操作系统
操作系统为我们提供很多的资源,提供了很多封装好的系统调用,可以使用库,程序员可以使用系统提供的函数,包括已经实现了的驱动程序,实现软件开发的分层,程序员只需要知道如何使用,不需要关心如何实现。
2.如何在开发板安装上一个可运行的操作系统?
window PC安装操作系统?
1>准备安装程序(win 10)
2>引导程序(BIOS)
系统自带,我们只要做相应的配置即可,不关心其实现
3>windows操作系统
windows内核
文件系统
4>驱动程序
5>应用程序
开发板安装系统?
1>准备安装程序
没有直接可用的安装程序,我们可以在一些指定的官方网站下载标准版本的。
引导程序的源码
操作系统内核的源码
制作文件系统的开源软件包
由于嵌入式平台的差异性,导致这些标准源码无法直接使用,需要经过修改(移植)的过程.
把不能用的源代码-------------->经过修改---------->与硬件匹配的源代码
PC 硬件标准化 软件标准化
嵌入式硬件 硬件有差异 没有固定能用的软件
2>引导程序(bootloader)
boot+loader
是操作系统内核运行之前运行的一段代码,最终目的就是启动内核。
boot
初始化基础的硬件设备,建立内存空间映射图,将系统的软硬件环境带到一个合适的状态。
loader
将操作系统内核镜像加载到内存,之后跳转到内核所在的地址运行。
3>操作系统内核(Linux内核)
内核下载网站:www.kernel.org
linux内核的本质:
C语言:内核是C语言函数的集合
硬件:内核是硬件的管理者
应用程序:内核是服务的提供者
内核的功能:
系统调用:实现应用程序和内核的交互
进程管理:进程创建,终止,通信,调度
内存管理:MMU
设备管理:硬件的驱动
虚拟文件系统
网络协议
4>文件系统
包括根文件系统和建立于flash上的文件系统。
文件系统包含了Linux系统能够运行的所必需的应用程序,库等等。
启动文件系统中init进程。