第四季-专题3-嵌入式Linux内核制作

时间:2023-01-27 19:36:41

专题3-嵌入式Linux内核制作

一.linux内核简介

  1. 系统架构

(1)Linux系统是怎么构成的?

 

(2)为什么linux系统分为了用户空间和内核空间?

现代CPU通常实现了不同的工作模式,以ARM为例,就实现了7中工作模式:

用户模式(usr),快速中断(fiq),外部中断(irq)、管理模式(svc),数据访问中止(abt),系统模式(sys),未定义指令异常(und)。

X86也实现了4个不同的级别:Ring0-Ring3。Ring0下,可以执行特权指令,可以访问IO设备等,在RIng3则有很多限制。Linux系统利用了CUP的这个特点,使用了其中的两个级别分别运行LInux内核与应用程序,这样是操作系统得到了充分的保护。例如:如果使用X86,用户代码运行在Ring3,内核代码运行在Ring0.

内核空间和用户空间是程序执行额两种不同的状态,通过系统调用硬件中断能够完成从用户空间到内核空间的转移。

(3)linux内核架构

 

System call interface(sci):系统调用接口,我们事先read和open的代码都是在内核中

Procecss management(PM)进程管理模块,进程的管理、删除与调度。

Memory management(MM)内存管理模块,进行内存的管理与回收

Arch:体系结构相关的代码,cup想换的代码

Virtual file system(VFS)虚拟模块管理系统

Network stack 网络协议栈

Device Drivers(DD)设备驱动程序

  1. linux内核源代码

2.1下载地址           www.kernel.org,官方网站

l  Linux内核源代码采用树形节后进行组织,分场合理地把功能相关的文件都放在同一个目录下,使得程序更具有可读性。

l  Arch目录:arch是architecture的缩写。内核所支持的每一种cpu体系,在该目录下都有对应的子目录。每个cpu的子目录,又进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,内存管理,系统调用等。

l  Documentation:内核的文档

l  Driversm目录:驱动程序

l  Include目录:内核所需要的头文件。与平台无关的头文件在include/linux子目录下,与平台相关的头文件则放在相应的子目录中。

l  Fs目录:文件系统,存放各种文件系统的实现代码。每个子目录对应一种文件系统的实现,公用的源程序用于实现虚拟文件系统vfs

||--devpts /* /dev/pts虚拟文件系统*/

||--ext2 /*第二扩展文件系统*/

||--fat /*MS的fat32文件系统*/

||--isofs /*ISO9660光盘cd-rom上的文件系统*/

l  Net目录:网络协议的实现代码

||--802     /*802无线通讯协议核心支持代码*/

||--apletalk  /*与苹果系统联网的协议*/

||--ax25    /*AX25无线INTENET协议*/

||--bridge   /*桥接设备*/

||--ipv4     /*IP协议族V4版32位寻址模式*/

||--ipv6             /*IP协议族V6版*/

二.Linux内核配置与编译

  1. 为什么要配置内核

基于硬件与软件需求,选出需要的,去掉多余的。

Make config:基于文本模式的交互式配置。

Make menuconfig:基于文本模式的菜单型配置。

 

三.嵌入式linux内核制作

 

setenv bootargs noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.153.129:/home/free/part3/rootfs ip=192.168.153.130:192.168.153.129:192.168.153.1:255.255.255.0::eth0:off