可口可乐网站建设目的丽江建设工程信息网站
news/
2025/9/28 10:27:22/
文章来源:
可口可乐网站建设目的,丽江建设工程信息网站,宠物网页设计模板,学做网站有用吗驱动 以来内核编译#xff0c;依赖内核执行 驱动可以同时执行多份代码 没main 驱动是依赖内核的框架和操作硬件的过程 一#xff0c;Linux系统组成 app: [0-3G] ---------------------------------系统调用#xff08;软中断… 驱动 以来内核编译依赖内核执行 驱动可以同时执行多份代码 没main 驱动是依赖内核的框架和操作硬件的过程 一Linux系统组成 app: [0-3G] ---------------------------------系统调用软中断--------------------- kernel 【3-4G】 5种功能 进程管理进程的创建、销毁、调度等功能 文件管理通过文件系统ext2/ext3/ext4 yaff jiffs等来组织管理文件 网络管理 通过网络协议栈对数据进程封装和拆解的过程 内存管理 通过内存管理器对用户空间和内核空间内存的申请和释放 设备管理设备驱动的管理 字符设备驱动 按照字节为单位进行访问顺序访问会创建设备文件open read write close来访问 块设备驱动 按照块512字节扇区来访问可以顺序访问可以无序访问会创建设备文件open read write close来访问 网卡设备驱动按照网络数据包来收发的 二宏内核、微内核 宏内核将进程、网络、文件、设备、内存等功能集成到内核中 优点代码运行效率高 缺点如果一个部分出错整个内核就崩溃了 eg: ubuntu Android 微内核只将进程、内存机制集成到内核中文件设备驱动等在操作系统之外运行 优点稳定性强 缺点效率低 eg:鸿蒙 window QNX 三驱动模块 入口安装资源的申请 出口卸载资源的释放 许可证GPL #include linux/init.h
#include linux/module.h
static int __init hello_init(void)
//__init将hello_in it放到.init.text段中
{return 0;
}
static void __exit hello_exit(void)//__exit将hello_exit放到.exit.text段中
{
}
module_init(hello_init);
//告诉内核驱动的入口地址
module_exit(hello_exit);
//告诉内核驱动的出口地址
MODULE_LICENSE(GPL);
//许可证 Makefile KERNELDIR: /lib/modules/$(shell uname -r)/build/ //内核的路径 #KERNELDIR: /home/linux/kernel/kernel-3.4.39/ PWD:$(shell pwd) //驱动文件的路径 all: //目标 make -C $(KERNELDIR) M$(PWD) modules //进入内核目录下执行make modules这条命令 //如果不指定 M$(PWD) 会把内核目录中的.c文件编译生成.ko //M$(PWD) 向编译模块的路径 clean: make -C $(KERNELDIR) M$(PWD) clean obj-m:hello.o //指定编译模块的名字 KERNELDIR: /lib/modules/$(shell uname -r)/build/
#KERNELDIR: /home/linux/kernel/kernel-3.4.39/
PWD:$(shell pwd)
all:
make -C $(KERNELDIR) M$(PWD) modules
clean:
make -C $(KERNELDIR) M$(PWD) clean
obj-m:hello.o 总结 1、首先写个程序-》C语言程序-》.c 2、编译-》依靠内核编译 开发板内核 和Ubuntu内核 uname -r 3、写Makefile-》找内核路径 4、当前文件的路径 5、all-》编译 make modules obj-m:hello.o 四内核的打印函数 printk打印级别 “内容”-和printf用法类似-》区别多了个打印级别 printkKERN_ERR yxc include/linux/printk.h 打印等级 #define KERN_EMERG 0 /* system is unusable */ #define KERN_ALERT 1 /* action must be taken immediately */ #define KERN_CRIT 2 /* critical conditions */ #define KERN_ERR 3 /* error conditions */ #define KERN_WARNING 4 /* warning conditions */ #define KERN_NOTICE 5 /* normal but significant condition */ #define KERN_INFO 6 /* informational */ #define KERN_DEBUG 7 /* debug-level messages */ 0 ------ ------ 7 最高的 最低的 cat /proc/sys/kernel/printk查看打印等级 4 4 1 7 终端的级别 消息的默认级别 终端的最大级别 终端的最小级别 使用到的命令 进入虚拟控制台 ctrlalt[F1-F6] 退出虚拟控制台 ctrlalt[F7] sudo insmod hello.ko 安装驱动模块 sudo rmmod hello 卸载驱动模块 lsmod 查看模块 -》暂时没有使用 dmesg 查看消息 sudo dmesg -C 直接清空消息不回显 sudo dmesg -c 回显后清空 驱动安装完成以后更改变量方法 lsmod查看驱动 找到路径 /sys/module/驱动模块的名字/parameters$ /sys/module/hello/parameters$ 进入su修改 su root echo 123 a echo 10 b 查看 cat a
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920500.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!