引子:前面的文章实现了可加载的内核模块,通过这个内核模块实现对PWM定时器的控制和中断处理程序的注册。这里讨论一下将内核模块直接编译进内核的过程,首先声明来源于国嵌的视频教学。

其实很简单,第一步把冰箱门打开...(此处略去200字)

正经的第一步:将源文件代码 mytimer.c(不知道这么说规范不,反正就是 .c 文件)拷到Linux源代码目录下的 drivers 下的某个目录下 如:drivers/char

第二步:修改drivers/char 中的 Kconfig,Kconfig文件维护着内核模块配置的菜单(Linux源代码根目录下 make menuconfig 出来的东西)
打开Kconfig,看到:
menu "Charecter devices" (drivers/char 中的Kconfig维护着菜单中字符驱动的选项)
(依照其他驱动的格式添加)
config MY_TIMER
(Tab)bool "my_timer" (在make menuconfig 打开的菜单中,my_timer 将出现在Charecter devices 的下一层)
(保存关闭)
如果在make menuconfig 中选择了my_timer,配置结果将体现在Linux源代码根目录下 .config 文件中,在该文件中将会自动添加 CONFIG_MY_TIMER=y 的配置项。

第三步:打开drivers/char 中的 Makefile
(依照其他驱动的格式添加)
obj-$(CONFIG_MY_TIMER)        += mytimer.o
(保存关闭)
编译就可以了
同颜色的部分是相关联的,即肝胆相照,荣辱与共,同生共死,互为因果

注意:

编译可加载的内核模块的代码 mytimer.c 同拷到直接编译到内核所使用的 mytimer.c 稍有不同,加载的内核模块的代码 mytimer.c 中开始部分需要有

#ifndef MODULE
#define MODULE
#endif

在直接编译到内核时应当去掉

否则会报错(该部分源自网民阿南的《ARMLinux入门与实践》)

Linux:驱动程序直接编译到内核(源自国嵌的视频教学)相关推荐

  1. Linux:编译生成内核模块(来自国嵌的视频教学)

    内核模块的代码文件 文件 yyyy.c  (yyyy可以与模块xxxx同名也可以不同名) (类似模板的东西)  #ifndef __KERNEL__ #define __KERNEL__ #endif ...

  2. Ubuntu 8.04 Linux系统下面编译更新内核版本

    在 VirtualBox 虚拟机上面测试的,ubuntu 8.04系统. 1. 下载内核源代码 http://www.kernel.org/ 下载The latest stable version o ...

  3. 国嵌linux内核编程,国嵌视频学习笔记---linux内核开发1

    一.linux内核简介 1.linux系统由两部分组成:内核空间和用户空间. 2.用户空间包括:用户应用程序和C库 3.内核空间包括:系统调用接口.内核和体系结构相关代码. 4.ARM处理器7种工作模 ...

  4. Linux WIFI驱动编译进内核——RTL8188EUS

    1.准备好Realtek提供的RTL8188EUS驱动源码: 2.将RTL8188EUS驱动源码拷贝进开发板的内核源文件目录/driver/net/wireless/rtl818x: 3.修改/dri ...

  5. 学习国嵌嵌入式视频笔记

    本文中使用到的datasheet都来自国嵌开发板光盘,笔记也都摘抄自光盘视频 S5PV210_UM_REV1.1.pdf S5PV210_iROM_ApplicationNote_Preliminar ...

  6. 嵌入式linux 国嵌,[嵌入式Linux学习]国嵌嵌入式视频1

    1.目录结构 /bin:存放常用命令 /boot:存放启动程序 /dev:存放设备文件 /etc:存放启动.关闭.配置程序与文件 /home:用户工作根目录 /lib:存放共享链接库 /lost_fo ...

  7. Linux 编译安装内核

    一.简介 内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性.Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新.新的内核修 ...

  8. 国嵌Linux视频驱动开发

    1 Linux PCI.串口驱动程序 1.1 PCI总线概述 总线概念 总线是一种传输信号的信道;总线是连接一个或多个导体的电气连线.总线由电气接口和编程接口组成,我们重点关注编程接口. PCI概念 ...

  9. 基于DM6467的TVP7002 Linux驱动程序开发

    在Linux中,使用V4L2框架管理所有的视频编解码设备.针对我们开发板的V4L2框架结构已经在之前的TVP5150驱动程序编写和OV5642驱动程序编写的说明文档中进行了详细的分析,所以这里不再对整 ...

最新文章

  1. RNN,LSTM,GRU简单图解:
  2. 企业如何提升管理能力,让企业协作更顺畅?
  3. Ora-12154:无法解析连接字符串
  4. HTTP 三次握手  建立连接 和  四次握手断开连接
  5. CMMI之需求管理和股票池管理
  6. 关于Docker COPY指令只能使用相对路径的说明
  7. 2018-11-02 在代码中进行中文命名实践的短期目标
  8. sql字符串拼接_Mybatis的SqlSession执行sql过程
  9. python api调用百度ai平台_Python 百度AI接口调用
  10. 硬盘MBR和GPT区别
  11. 在powerpoint中默认的视图是_专升本计算机《Word、Excel、Powerpoint》知识点
  12. .net 发送电子邮件
  13. vj p1041神风堂人数 题解
  14. 【总结】1164- 一篇非常 Nice 的 UmiJS 教程
  15. Ubuntu系统安装Ghostscript
  16. 计算机如何识别英语,Excel自动识别中英文妙招三则 -电脑资料
  17. tex 表格内容换行_如何让latex表格中一个单元格的文字换行
  18. [经验] 我想加入阿里,我该怎么做
  19. 服务器虚拟化太金苹果专业十,合作能力
  20. Linux线程属性总结

热门文章

  1. JAVA拳皇_拳皇(Java简单的小程序)代码实例|chu
  2. 栈的C语言案例,堆栈实例代码(C语言)
  3. redis的zset的底层实现_Redis(三)--- Redis的五大数据类型的底层实现
  4. php 字符串 替换 最后,php如何替换字符串中的最后一个字符
  5. 机器学习的练功心法(二)——引入
  6. centos6安装mysql权限被拒绝_CentOS6.6安装mysql出现的问题
  7. 【RK3399Pro学习笔记】十六、ROS中的常用可视化工具
  8. Pro*C 中嵌入pl/sql块
  9. Taro+react开发(87):图片引入
  10. 前端学习(2916):事件绑定