第7章LINUX

更新时间:2023-09-05 09:59:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

马洪连 主编

第七章 嵌入式Linux操作系 统及应用

马洪连 主编

内容简介 7.1

嵌入式Linux操作系统概述 7.2 嵌入式Linux操作系统的开发工具 7.3 嵌入式Linux的内核编译及驱动程序 的开发 7.4 嵌入式Linux操作系统的应用开发

马洪连 主编

7.1 嵌入式Linux操作系统概述7.1.1嵌入式Linux操作系统分类(1)RT-Linux RT-Linux是利用Linux进行实时系统开发 比较早的尝试,是一种硬实时操作系统。目 前RT-Linux已成功应用于航天飞机的空间数 据采集、科学仪器测控,以及电影特技图像 处理等众多领域。

马洪连 主编

RT-Linux工作原理:

马洪连 主编

(2)uClinux: 控制领域中的linux系统。它包含linux常用的API, 内核小于512K。目前已支持的CPU芯片有, Motorola公司的68K系列、PowerPC系列以及 ARM公司的系列芯片。 (3)红旗嵌入式Linux由北京中科院红旗软件公司推出,是国内做得较 好的一款嵌入式操作系统。该款嵌入式操作系统 重点支持p-Java。系统目标一方面是小型化,另 一方面能重用Linux的驱动和其它模块。5

马洪连 主编

(4)Montavista Linux 由美国MontaVista 软件公司基于Linux内核开 发。MontaVista Linux能够支持广泛的CPU芯片 系列、支持多种目标板结构,并提供强大的网络 协议支持,而且拥有丰富的驱动程序和API。目 前有三个版本 :PRO :专业版本,CGE :电信 Linux版本,CEE :消费电子 版本。 (5) Mizi linux 韩国MIZI公司所公布的开放源代码的免费嵌入式 操作系统arm-Linux。大部分的2410系统板上都 是采用的mizi linux。

马洪连 主编

7.1.2嵌入式Linux内核组成与启动过程1 嵌入式Linux内核的组成

进程调度 进程间通讯 内存管理 虚拟文件系统 网络接口

马洪连 主编

(1)进程调度(SCHED) : 进程调度负责控制进程对CPU的访问,当 需要选择下一个进程运行时,由调度程序 选择最值得运行的进程。可运行进程是仅 等待CPU资源的进程,等待其它资源的进 程是不可运行进程。Linux使用了基于优先 级的进程调度算法选择新的进程。

马洪连 主编

(2)内存管理(MM) 允许多个进程安全的共享主内存区域。 Linux的内存管理支持虚拟内存,内存管理从逻辑上分为 硬件无关部分和硬件有关部分。硬件无关部分提供了进程 的映射和逻辑内存的对换;硬件相关的部分为内存管理硬 件提供了虚拟接口。 (3)虚拟文件系统(VFS) 虚拟文件系统VFS隐藏了各种硬件的具体细节,为所有的 设备提供了统一的接口。VFS提供了多达数十种不同的文 件系统,具体可以分为逻辑文件系统和设备驱动程序。

马洪连 主编

(4)网络接口(NET)网络接口NET提供了对各种网络标准的存取和各 种网络硬件的支持。网络接口一般分为网络协议 和网络驱动程序,网络协议部分负责实现每一种 可能的网络传输协

议,网络设备驱动程序负责与 硬件设备通信,每一种可能的硬件设备都有相应 的设备驱动程序。

马洪连 主编

(5)进程间通信(IPC)

管道和FIFO 信号量 消息队列 共享内存

马洪连 主编

2 嵌入式Linux内核目录结构Linux内核源代码位于/usr/src/linux目录,代码分布如下: /arch:包含所有硬件结构特定的内核代码。如i386、ARM 等 /Documentation:保存着详细的说明文档 /Scripts :主要在配置内核时用到,存放了配置内核的一 些脚本文件,比如make menuconfig命令等。

马洪连 主编

/drivers:包含内核中所有的设备 驱动程序。如USB、串口等; /fs:包含所有的文件系统代码。 如jffs2、ext2、ntfs等; /include:包含建立内核代码时所 需的大部分库文件。如asmarm是arm平台所需的库文件; /init:包含内核的初始化代码,内 核从此处工作; /ipc:包含了核心进程间的通讯代 码; /kernel:包含了内核管理的核心 代码; /mm:包含了所有的内存管理代 码; /net:包含了核心的网络部分代码, 如:ipv4、ipv6等;

马洪连 主编

嵌入式Linux启动嵌入式Linux启动分为两个部分,系统引导与嵌 入式Linux启动。其中系统引导将完成嵌入式 Linux装入内存前,初始化CPU和相关IO设备, 并将嵌入式Linux调入内存的工作。系统引导主 要由BootLoader实现,BootLoader将嵌入式 Linux内核调入内存之后,将权力交给嵌入式 Linux Kernel,进入嵌入式Linux的启动部分。

马洪连 主编

power

BIOSGRUB/LILO Kernel bootstart_kernel ()激活交换分 区,检查磁 盘,加载硬 件模块

进入linux 操作系统 中完成外设及 其驱动程序 的加载和初 始化

init mingetty

rc.sysinit rc login()不同的启 动参数, 实现不同 的启动设 置

用户登 录

执行配置 文件

shell

You can use LINUX15

马洪连 主编

7.2嵌入式linux操作系统的开发工具7.2.1编译器gccGcc编译器能将C、C++语言源程序、汇程式化序 和目标程序编译、连接成可执行文件,如果没有 给出可执行文件的名字,gcc将生成一个名为 a.out的文件。在Linux系统中,可执行文件没有 统一的后缀,系统从文件的属性来区分可执行文 件和不可执行文件。

马洪连 主编

gcc 执行过程

预处理 这一步需要分析各种命令,如:#define、 #include、#ifdef等。 编译 这一步将根据输入文件产生汇编语言,由于通常 是立即调用汇编程序,所以其输出一般不保存在 文件中。 汇编 这一步将汇编语言用作输入,产生具有.o扩展名 的目标文件。 连接 在这步,各目标文件.o被放在可执行文件的适当 位置上。gcc调用连接程序ld来完成最终的任务。17

马洪连 主编

gcc用法

gcc最基本的用法是∶ gcc [options] [filenames] 其中options就是编译器所需要的参数, filenames给出相关的文件名称。

举例: gcc –c main.c gcc –c subr.c gcc –I/usr/include –o prog main.o subr.o18

马洪连 主编

gcc 参数说明

-c 只编译并生成目标文件。 -o FILE 生成指定的输出文件FILE,没有指定 FILE,默认输出文件为a.out。 -O 优化生成代码。 -w 不生成任何警告信息。 -Wall 生成所有警告信息。 -g 生成调试信息。GNU 调试器可利用该信息。 -lLIBRARY 连接时搜索指定的函数库LIBRARY。19

本文来源:https://www.bwwdw.com/article/yk3i.html

Top