LV14驱动开发初级
文章平均质量分 67
字母哥先生
痛苦的本质来源于你对现状的不满,焦虑的本质来源于你成长速度太慢。
展开
-
【LV14 day11 用户和内核空间】
实际内存操作时,需要将虚拟地址映射到实际内存的物理地址,然后才进行实际的内存读写。执行流:有开始有结束总体顺序执行的一段独立代码,又被称为代码上下文。三、模块编程与应用编程的比较。一、内核空间和用户空间。四、内核接口头文件查询。原创 2024-02-29 11:40:00 · 162 阅读 · 0 评论 -
【lv14 day10内核模块参数传递和依赖】
既然内核模块的代码与其它内核代码共用统一的运行环境,也就是说模块只是存在形式上独立,运行上其实和内核其它源码是一个整体,它们隶属于同一个程序,因此一个模块或内核其它部分源码应该可以使用另一个模块的一些全局特性。bool bool insmod xxx.ko 变量名=0 或 1。perm:给对应文件 /sys/module/name/parameters/变量名 指定操作权限。传参方式 insmod xxx.ko 数组名=元素值0,元素值1,…原创 2024-02-26 20:02:19 · 367 阅读 · 0 评论 -
【LV14 day9内核模块编译】
4.对于静态加载的模块其本质是定义一个全局函数指针,并将其赋值为指定函数,链接时将地址放到特殊区段(.exitcall段),方便系统必要时统一调用,实际上该宏在静态加载时没有意义,因为静态编译的驱动无法卸载。类似于浏览器、eclipse这些软件的插件开发,Linux提供了一种可以向正在运行的内核中插入新的代码段、在代码段不需要继续运行时也可以从内核中移除的机制,这个可以被插入、移除的代码段被称为内核模块。其本质也是一个宏,宏体也是一个特殊链接标记,指示链接器在ko文件指定位置说明本模块源码遵循的许可证。原创 2024-02-26 20:01:10 · 1789 阅读 · 0 评论 -
【Linux内核模块加新功能 DAY6-8】
ko #此处为内核模块文件名,将内核模块插入正在执行的内核中运行 ----- 相当于安装插件。sudo rmmod?#,此处为插入内核后的模块名,此时将已被插入的内核模块从内核中移除 ----- 相当于卸载插件。insmod ./?.ko #将内核模块插入正在执行的内核中运行 ----- 相当于安装插件。即新功能源码与内核其它源码不一起编译,而是独立编译成内核的插件(被称为内核模块)文件.ko。#将已被插入的内核模块从内核中移除 ----- 相当于卸载插件。原创 2024-02-22 20:59:35 · 265 阅读 · 0 评论