zoukankan      html  css  js  c++  java
  • 嵌入式内核

    嵌入式内核是在嵌入式硬件软件之间的抽象层,它具有五个方面的作用:任务管理(Task Management)、定时(Timers)、设备I/O主管(Device I/O Supervisor)、动态存储分配(Dynamic Memory Allocation)、任务间同步通信(Inter-task Communication&Synchronization)。嵌入式系统中的内核是系统的核心,系统所有的任务及所完成的功能都是在内核的控制之下完成的。我们可以编程,然后通过程序控制内核完成我们所需要的工作。

    一个系统要进行工作要包括三部分,即boot内核文件系统。而真正内核的东西其实很少,包括cpu初始化、线程调度内存分配文件系统、网络协议栈、驱动这些部分。在基于优先级的调度中,内核处理任务所需的仅仅是每个任务的优先级,倘若一个任务的优先级高于另外一个任务的优先级,那么该任务会先于另外一个任务执行。而对于安全性要求很高的系统,就需要利用分区调度来完成。在分区调度中,内核要求任务分成许多组,每一个组中含有许多相关的任务。分区调度器根据一系列的时钟窗口来执行某个任务。每个过程中的任务只有当时钟窗口来临这个任务时才开始运行,所有过程中的其他任务在这个过程中则不能运行。
    以linux为例,Linux可以分为User Space和Kernel Space,即构成用户空间内核空间
    用户空间:应用程序 C库 系统配置文件等
    内核空间:在内存中,用户一般不能直接接触到(系统调用接口,体系结构相关的一些代码等等)
    其实内核空间与用户空间是程序执行的两种不同的状态,通过系统调用和硬件中断能够完成从用户空间到内核空间转移。
     

    内核架构

    内核架构是有七个子系统组成的。
    1. 系统调用接口模块
    2. 进程管理模块
    3. 内存管理子系统
    4. 体系结构相关的子系统(和CPU密切相关)
    6. 网络协议栈子系统
    7. 设备驱动程序模块
     

    目录文件

    内核源码下几个重要的目录文件
    arch目录:arch是architecture的缩写,内核所支持的每种cpu体系,在该目录下都有对应的子目录。每个CPU的子目录,有进一步分解为boot,mm,kernel等子目录,分别包含控制系统引导,内存管理,系统调用等
    documentation目录:内核的文档(比如一些驱动的使用方法,一些内核的更新记录等等都是放在这个目录里面)
    drivers目录:设备驱动程序
    include目录:内核所需要的头文件,与平台无关的头文件在include/linux子目录下,与平台相关的头文件则放在相应的子目录中
    fs目录:存放各种文件系统的实现代码,每个子目录对应一种文件系统的实现,公用的源程序用于实现虚拟文件系统VFS
     
     

    内核配置编译

    内核配置

    下载解压内核源码,在内核源码目录下,有两个命令可以配置内核
    1. make config: 基于文本模式的交互式配置
    2. make menuconfig: 基于文本模式的菜单型配置(这个配置方法更直观、简单、高效)
    三个选项所代表的意义:
    <*>选择该功能,该功能会被编译进内核,运行在内存中
    <M>选中该功能,内核模块,不编译进内核,会将相应的模块编译成.O文件,然后放到相应的目录下存放在硬盘里面,当要用到该功能时,内核会把该功能加载到内存中,不用的时候从内存中删除,这样可以节省内存,提高内存利用率
    < >本次编译不选中该功能
    内核配置的结果:内核配置通常是在一个已有的配置文件基础上,通过修改得到新的配置文件,linux内核提供了一系列可供参考的内核配置文件,位于Arch/$cpu/configs

    内核编译

    X86: make bzImage
    arm: make uImage ARCH=arm CROSS_COMPILE=arm-linux-
     

    安装内核

     

    内核清理

     
  • 相关阅读:
    android之Toast多次提示延时处理
    android之双击返回键退出程序
    android之对话框“确定退出吗?”
    数组随机排序
    android全屏显示,去掉标题栏和信息栏
    android四大组件之service生命周期
    android四大组件之activity生命周期
    struct和union,enum分析
    const和volatile分析
    goto,void,extern,sizeof分析
  • 原文地址:https://www.cnblogs.com/zhugeanran/p/9432079.html
Copyright © 2011-2022 走看看