zoukankan      html  css  js  c++  java
  • linux启动时对编译进内核驱动模块的加载

    linux启动时对编译进内核驱动模块的加载

    时间:2008-10-15 20:49来源:信息化中国 作者: 点击:11次 收藏 挑错 推荐 打印
    linux启动时对编译进内核驱动模块的加载文章来源:http://gliethttp.cublog.cn今天北京下雨了[init/main.c]start_kernel()-rest_init()-kernel_thread创建 ... - Discuz! Board
      
    linux启动时对编译进内核驱动模块的加载
    文章来源:http://gliethttp.cublog.cn
    今天北京下雨了
    [init/main.c]start_kernel()->rest_init()->kernel_thread创建核心线程init()->do_basic_setup()->do_initcalls()
    static void __init do_initcalls(void)
    {
    initcall_t *call;
    call = &__initcall_start;
    do {
    (*call)();
    call ;
    } while (call &__initcall_end);
    /* Make sure there is no pending stuff from the initcall sequence */
    flush_scheduled_tasks();
    }
    vmlinux-armv.lds.in中对__initcall_start的定义
    ...
    __initcall_start = .;
    *(.initcall.init)
    __initcall_end = .;
    ...
    /include/linux/init.h中对.initcall.init和initcall_t定义
    typedef int (*initcall_t)(void);
    #define __init_call __attribute__ ((unused,__section__ (".initcall.init ")))
    #define module_init(x) __initcall(x);
    在dirvers/at91/net/at91_ether.c中
    module_init(at91ether_init)
    所以能够看出at91ether_init初始化函数指针将会被连接到.initcall.init空间,因此(*call)();系统启动时核心线程Init将直接调用
    at91ether_init()完成网络硬件初始化;对于insmod加载的驱动,任何工作由insmod单独解析完成,insmod系统调用原型为sys_init_module
    将rtl8019驱动编译进linux内核
    1>驱动代码:rtl8019.c
    2>在net目录下的config.in文档中添加一项
    dep_tristate ' RTL8019 support' CONFIG_RTL8019 $CONFIG_ISA
    3>make menuconfig
    将RTL8019 support选择'y',保存退出,autoconf文档中出现一个宏定义:#define CONFIG_RTL8019
    4>向net目录下的makefile,添加:
    obj-$(CONFIG_RTL8019) = rtl8019.o
    5>编译内核,即将rtl8019添加到了linux内核
    注:在menuconfig中选择m和y的区别:
    y:模块驱动编译到内核中,启动时自动加载
    m:模块会被编译,但是不会被编译到内核中,只是生成.o文档,我们能够收集这些.o文档做到linux的文档系统,如:ramdisk中,然后用modprobe或insmod实现动态加载.
  • 相关阅读:
    jq 获取下一个兄弟原素 下拉箭头旋转
    weui复选框无法传值
    小乌龟 coding 克隆、提交一直提示无权限
    mysql 时间操作
    Mysql表结构导出excel(含数据类型、字段备注注释)
    sql server数据库文件的迁移(mdf&ldf文件)
    thinkphp 5 _initialize 使用问题
    thinkphp5 or
    找实习与校招总结——经验与收获2021
    千兆网数据CRC检验和过滤
  • 原文地址:https://www.cnblogs.com/leaven/p/1701260.html
Copyright © 2011-2022 走看看