• Machine type的匹配


    在文章《ARM linux kernel从入口到start_kernel代码分析 -- 只到machine type选中为止》中,bootloader将machine type(是一个数字)放在了R5寄存器里面,然后linux kernel枚举所有machine type数字,找到匹配的,然后执行machine_desc结构中的一系列初始化函数。

    那在编写kernel driver的时候,如何给板子申明一个machine type的数字?

    这个数字就是machine_desc结构中nr这个member的值。当使用MACHINE_START宏定义自己板子的machine_desc结构的时候,假设给自己的板子起名为AAA,那么会自动生成一个常量宏定义MACH_TYPE_AAA,付给nr这个member。

    所以问题就是这个MACH_TYPE_AAA是在哪里定义的。grep一下代码就可以发现是在目录:include/generated/mach-types.h文件中定义的。从目录名字就可以看到这个文件是自动生成的,我们需要填写的配置文件位于:arch/arm/tools/mach-types。

    在这个目录下有个脚本叫gen-mach-types,运行这个就会更新include/generated/mach-types.h了。

    BTW:bootloader中有一些内容需要保证和kernel中的一致,比如这个machine type的数字,还有bootparam在内存中的地址等。

  • 相关阅读:
    电影观后感
    自定义内存管理
    web.xml配置详解
    Annotation
    Centos中yum方式安装java
    linux下添加用户并赋予root权限
    Injector
    Container
    GlassFish的安装与使用(Windows)
    Version Control
  • 原文地址:https://www.cnblogs.com/super119/p/2429938.html
Copyright © 2020-2023  润新知