linux系统移植-前言(1)

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进程。

你可能感兴趣的:(linux系统移植)