
linux驱动
123456
654654654654654
12345
展开
-
linux内核模块的依赖(四)
nm module.ko 可以查看目标文件的符号信息,如符号类型是t表示是函数,我们可以看到printk的符号类型是U,U表示它是一个未决符号,这表示在编译阶段不知道这个符号的地址,因为它被定义在其他文件中,没有放在模块代码中一起编译。那么printk函数的地址问题怎么解决?这里引入了一个导出的宏:EXPORT_SYMBOL();还有一个宏可以导出叫:EXPORT_SYMBOL_GPL();这两个有点区别/*module.c*/#include<linux/kernel.h>原创 2021-11-07 21:51:16 · 1083 阅读 · 0 评论 -
linux内核模块参数(三)
/*module.c*/ //文件名#include<linux/kernel.h>#include<linux/module.h>#include<linux/init.h>static int baudrate =9600;static int port[4]={0,1,2,3};static char *name = "module";module_param(baudrate,int,S_IRUGO);module_param_array(port原创 2021-11-07 21:15:35 · 389 阅读 · 0 评论 -
linux内核模块的一般形式(二)
/*module.c*/#include<linux/init.h>#include<linux/kernel.h>#include<linux/module.h>static int __init module_init(void)//注意是两个下划线{ printk("module_init\n"); return 0;}static int __exit module_exit(void)//注意是两个下划线{ printk("module_e原创 2021-11-07 19:51:50 · 143 阅读 · 0 评论 -
linux驱动的加载,移除,编译及其Makefile简单编写(一)
首先下载linux-3.14,解压然后进入目录,打开Makefile里面有199行选择编译工具为arm-linux-然后保存退出,然后make fs4412也就是编译你的板子,提示你没有这个编译规则,你就使用make fs4412_defconfig它会提示你没有这个板子,它应该在的目录是arch/arm/configs/下,没有就直接 make exynos_defconfig然后再来make uImage;编译了我们就可以向内核插入模块了先创建一个目录,取名dmodle吧,随便取,然后再进入dm原创 2021-11-07 14:17:57 · 403 阅读 · 0 评论