ARM-Linux内核基础知识

文章目录

    • 系列文章
    • 一、ARM-Linux内核和普通内核的区别
      • 1.Linux内核
      • 2. ARM-Linux内核
    • 二、Linux 模块概述
      • 1. 与module相关的命令有
      • 2. 模块命令
    • 三、模块的加载
    • 四、模块的卸载
    • 五、ARM-Linux系统的启动和初始化
    • 六、移植的基本概念
      • 1. 从一个硬件平台移植到另外一个硬件平台
        • - Linux操作系统移植。
        • - 内核移植
      • 2. 从一个操作系统移植到另一个操作系统
      • 3. 从一种软件库环境移植到另一种软件库环境

系列文章

  1. ARM-Linux内核知识点
  2. Linux之交叉编译器的构建

一、ARM-Linux内核和普通内核的区别

1.Linux内核

作者Linux Torvalds
C语言写成
宏内核

2. ARM-Linux内核

基于ARM处理器的Linux内核

Linux是一个单内核(monolithic
kernel),单内核的最大优点是效率高,因为所有的内容都集中在一起,但也有可扩展性以及可维护性差的缺点。模块机制的引入就是为了弥补这一缺陷。内核模块全称为动态可加载内核模块(Loadable
Kernel Module,LKM)是Linux内核向外部提供的一个插口,简称为模块。

二、Linux 模块概述

1. 与module相关的命令有

modprobe、depmod、genksyms、makecrc32、insmod、rmmod、lsmod 、ksyms以及 kerneld。
其中以 insmod、rmmod、lsmod、depmod、modprobe、kerneld最重要

2. 模块命令

lsmod把现在 kernel 中已经安装的modules列出来
insmod把某个 module安装到 kernel 中。
rmmod把某个没在用的module从kernel中卸载。
depmod制造 module dependency file,以告诉将来的insmod要去哪儿找modules来安装。这个dependency file放在 /lib/modules/[当前kernel版本]/modules.dep

帮助理解记忆
module — mod
insert 插入 — insmod
remove 删除 — rmmod

三、模块的加载

载module有两种方法

  1. 通过insmod命令手工将module载入内核
  2. 根据需要载入module(demand loaded module)

四、模块的卸载

当内核的某一部分在使用某个module时,该module是不能被卸载的。

例如,如果系统mount了VFAT文件系统,不能卸载VFAT module。每一个module有一个计数器(module
count)。可以利用lsmod命令来得到它的值

五、ARM-Linux系统的启动和初始化

  • 使用bootloader将内核映像载入
  • 内核数据结构初始化—内核引导第一部分
  • 外设初始化—内核引导第二部分
  • init进程和inittab脚本
  • rc启动脚本
  • Shell的启动

六、移植的基本概念

移植,英文为 Porting。从广义上讲,移植包括软件移植硬件移植
从狭义上讲,移植就是指软件移植,即将一个软件从一个平台迁移到另外一个与其不同的平台上工作

1. 从一个硬件平台移植到另外一个硬件平台

ARM-Linux内核基础知识_第1张图片

- Linux操作系统移植。

比如将基于 x86体系的 Linux移植到基于 ARM体系的嵌入式 Linux。 首先是工具链的移植,因为基于 x86体系的
gcc就不能用在基 于 ARM的体系中,所以在 PC机上编译时要建立交叉编译工具 链。同时还要考虑 binutils、glibc等移植。

- 内核移植

内核移植主要包括两方面的工作,一是 arch目录下的体系 结构的移植,如从 i386移植到 arm,二是移植 drivers目录下的许多硬件驱动程序。最后是应用程序的移植

2. 从一个操作系统移植到另一个操作系统

这种形式的移植也是最常见的。比如将 Windows系统下运行的程序移植到 Linux/Unix系统中,
这时需要考虑操作系统提供的 API,以及所调用的函数库等。

3. 从一种软件库环境移植到另一种软件库环境

这种类型的移植也是比较常见的,例如基于 Qt 3.0库的应用程序移植到 Qt 4.0库环境中去。
再如基于 glibc库环境的程序移植到基于 uclibc库环境。 

ARM-Linux内核基础知识_第2张图片

你可能感兴趣的:(Linux学习,linux,arm,驱动开发,嵌入式硬件)