linux内核
洪流之源
这个作者很懒,什么都没留下…
展开
-
关于内核符号表
在编写驱动的过程中,常会使用到EXPORT_SYMBOL宏来将定义的函数名导出到内核符号表。以前只是简单的知道如果一个模块中定义的函数要提供给其他模块调用,就必须进行导出。 这段时间在编译单个模块的时候,因为没编译成功造成了函数没定义而报警的情况,因此让我有一个机会对内核符号表的问题进行了一个深入的学习和认识。 我们知道,如果一个模块中使用到了另一个模块中定义的函数,那么在编转载 2014-07-30 10:16:09 · 712 阅读 · 0 评论 -
mmap系统调用
mmap系统调用(功能)void* mmap ( void * addr , size_t len , int prot , int flags ,int fd , off_t offset )内存映射函数mmap, 负责把文件内容映射到进程的虚拟内存空间, 通过对这段内存的读取和修改,来实现对文件的读取和修改,而不需要再调用read,write等操作。addr:指原创 2014-11-24 13:22:25 · 641 阅读 · 0 评论 -
虚拟内存区域
虚拟内存区域虚拟内存区域是进程的虚拟地址空间中的一个同质区间,即具有同样特性的连续地址范围。一个进程的内存映象由下面几部分组成:程序代码、数据、BSS和栈区域,以及内存映射的区域。一个进程的内存区域可以通过查看/proc/pid/maps08048000-0804f000 r-xp 00000000 08:01 573748 /sbin/rpc.statd #tex原创 2014-11-24 13:45:03 · 1486 阅读 · 0 评论 -
1.字符设备驱动程序概念介绍
u-boot的任务是启动内核,内核的任务是启动应用程序。应用程序会涉及很多文件和硬件操作(当然不会直接操作硬件),比如读写文件,点灯、获取按键值。 对于应用程序的开发人员不要求去阅读芯片手册,了解硬件的构造。应用程序的开发人员在用户空间直接使用open、read、write等等这些被称为系统调用的函数,通过这些函数进入内核空间,进而调用内核空间的驱动程序。 比如对于控制led原创 2016-01-26 11:11:48 · 716 阅读 · 0 评论 -
i.MX6q SABRE Board for Smart Devices
Linux on ARM Homei.MX6q SABRE Board for Smart DevicesSkip to end of metadataCreated by Robert Nelson, last modified on Jun 17, 2016Go to start of metadata翻译 2016-08-11 11:09:33 · 2115 阅读 · 0 评论 -
最简单的驱动hello.c与Makefile模板
一、hello.c文件分析#include#includeMODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_ALERT "Hello,init the module!"); return 0;}static void hello_exit(void){ prin转载 2016-11-29 09:20:39 · 557 阅读 · 0 评论 -
makefile编译驱动
我们首先要进行make,编译成功后会生成一个globalmem.ko文件。接下来要将这个内核模块插入到内核当中,然后还要利用mknod命令生成一个设备文件节点。接下来我们再利用测试程序,对我们写好的驱动程序进行测试。那么以上的工作都可以通过下面这个Makefile文件完成,直接在shell终端输入make就可编译这个内核模块,输入make clean就可以清除一些中间文件,输入make ins转载 2016-11-29 09:57:22 · 1467 阅读 · 0 评论