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

专题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

原文地址:https://www.cnblogs.com/free-1122/p/10902169.html

时间: 2024-10-12 12:17:37

第四季-专题3-嵌入式Linux内核制作的相关文章

嵌入式Linux内核制作【转】

本文转载自:http://blog.csdn.net/coding__madman/article/details/51291316 1. Linux体系结构 从整体上来分,linux可以分为User Space和Kernel Space构成,即用户空间和内核空间 用户空间:应用程序 C库 系统配置文件等 内核空间:在内存中,用户一般不能直接接触到(系统调用接口,体系结构相关的一些代码等等) 这样划分的的好处: 其实内核空间与用户空间是程序执行的两种不同的状态,通过系统调用和硬件中断能够完成从用

嵌入式Linux内核制作

一.Linux内核简介 Linux系统架构分为内核空间和用户空间.它们之间切换条件:1.系统调用 2.硬件中断. 内核架构:1.系统调用接口 2.进程管理块 3.内存管理 4.体系结构相关代码 4.虚拟文件系统 5.网络栈 6.设备驱动 二.制作Linux内核 1.修改配置文件 make config --文本模式交互式的配置 make menuconfig --基于文本模式的菜单型配置(直观.简单.高效.推荐) 配置文件的选择:1.默认   2.已有的配置文件,Linux系统下的/boot/目

7、嵌入式linux内核制作

前面我们已经制作了uboot,接下来是制作kernel. 首先进入内核源码,执行make distclean.清除先前编译产生的文件. 注意配置内核的时候多了一个ARCH=arm的条件. 回车之后会进入arm的配置菜单: 就像我们前面配置linux内核一样,我们也会去找一个配置好的配置文件: 把config-file拷贝到我们的内核代码目录下: 然后把config-file拷贝成.config. 重新进入配置界面,发现配置生效了. 接下来就是内核的编译: 在编译的过程中会出现这样的一个错误: 这

3.4.嵌入式linux内核制作

? ? ? 前面我们已经制作了uboot,接下来是制作kernel. 首先进入内核源码,执行make distclean.清除先前编译产生的文件. 注意配置内核的时候多了一个ARCH=arm的条件. 回车之后会进入arm的配置菜单: 就像我们前面配置linux内核一样,我们也会去找一个配置好的配置文件: 把config-file拷贝到我们的内核代码目录下: 然后把config-file拷贝成.config. 重新进入配置界面,发现配置生效了. 接下来就是内核的编译: ? ? ? 在编译的过程中会

嵌入式linux 内核关机函数实现

arch/arm/kernel/process.c 实现pm_power_off = 关机函数 参考 board-omap3touchbook.c 文件中 pm_power_off = omap3_touchbook_poweroff; static void omap3_touchbook_poweroff(void) { int pwr_off = TB_KILL_POWER_GPIO; if (gpio_request_one(pwr_off, GPIOF_OUT_INIT_LOW, "D

维护嵌入式 Linux 内核——So Easy

安全漏洞只发生在 Windows 上的好日子正在快速过去.恶意软件黑客和拒绝服务老手们正在越来越多地瞄准过时的嵌入式 Linux 设备,因此在 10 月的欧洲嵌入式 Linux 会议(ELCE)上的几个演讲的主题就与修复 Linux 安全漏洞相关. 最值得去听的讲演之一是 Pengutronix 内核黑客 Jan Lübbe 的<长期维护或管理(或免管理)嵌入式系统 10 年以上>.在总结嵌入式 Linux 中不断增长的安全威胁后,Lübbe 制定了一项计划,以确保长期设备的安全和功能完整.

嵌入式Linux内核tasklet机制(附实测代码)

Linux 中断编程分为中断顶半部,中断底半部 中断顶半部: 做紧急,耗时短的事情,同时还启动中断底半部.中断底半部: 做耗时的事件,这个事件在执行过程可以被中断.中断底半部实现方法: tasklet,工作队列,软中断等机制实现.实际上是把耗时事件推后执行,不在中断程序执行. 什么是tasklet? Tasklet 一词的原意是"小片任务"的意思,这里是指一小段可执行的代码,且通常以函数的形式出现.这个 tasklet 绑定的函数在一个时刻只能在一个 CPU 上运行 ,tasklet(

【总结】嵌入式linux内核中Makefile、Kconfig、.config的关系及增加开机Hello World【转】

本文转载自:http://blog.csdn.net/fengyuwuzu0519/article/details/73772109 为了弄清内核的组织结构,我们先来实现下面这个简单的例子. 一.增加内核启动Hello World 任务: 内核启动的时候加载Hello驱动,并打印出Hello World 步骤: (1)在drivers目录下新建hello文件夹,在里面实现相应的hello.c.Makefile.Kconfig (2)修改上一级(Linux-3.4.2/drivers下)的Make

linux内核---嵌入式linux内核的五个子系统

转自:https://blog.csdn.net/qq_27522735/article/details/63251168 Linux内核主要由进程调度(SCHED).内存管理(MM).虚拟文件系统(VFS).网络接口(NET)和进程间通信(IPC)5个子系统组成,如图1所示. 图1 Linux内核的组成部分与关系 1.进程调度 进程调度控制系统中的多个进程对CPU的访问,使得多个进程能在CPU中"微观串行,宏观并行"地执行.进程调度处于系统的中心位置,内核中其他的子系统都依赖它,因为