码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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. 从一个硬件平台移植到另外一个硬件平台

    这里是引用

    - Linux操作系统移植。

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

    - 内核移植

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

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

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

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

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

    在这里插入图片描述

  • 相关阅读:
    MySQL索引
    基于Java毕业设计校园租赁系统的设计与实现源码+系统+mysql+lw文档+部署软件
    [附源码]java毕业设计大学生日常行为评价管理系统
    【问题思考总结】拉格朗日法的条件极值中的λ可以等于0吗(三种方法)
    C++二分算法:水位上升的泳池中游泳
    有了这一特性,不再安装脚手架,可创建Vue或React项目
    Android:DMB-T/H,开发记录
    网络安全(黑客)自学
    数据中台稳定性的“四高” | StartDT Tech Lab 18
    PT@古典概型@等概率模型
  • 原文地址:https://blog.csdn.net/weixin_46555054/article/details/124903239
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号