解决linux的驱动用insmod 方法测试可以,但静态编译到内核不能正确使用的问题
2022/2/27 7:21:46
本文主要是介绍解决linux的驱动用insmod 方法测试可以,但静态编译到内核不能正确使用的问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在写wk2312的驱动,刚开始用IMX8MM的硬件SPI进行SPI转串口的驱动。前面被CS引脚困住了一周,无奈只能用软件模拟使用。现在又遇到一个问题,在测试的时候用insmod的方法是可以正使看到sttyWK0与sttyWK1的,但放到内核里面进行编译,尝试静态加载这个SPI转串口驱动,结果,CS脚死活申请不了资源。导致无法正常使用驱动。调试了2天,没有头绪。最后灵机一动,会不会是初始化太快了,系统的IO还能不能申请调用,驱动就已经跑完了?于是马上往着开机启动的方向去找原因。
于是有了下面的内容:
在目录/kernel-imx/include/linux下面有init.h文件
/*
* A "pure" initcall has no dependencies on anything else, and purely
* initializes variables that couldn't be statically initialized.
*
* This only exists for built-in code, not for modules.
* Keep main.c:initcall_level_names[] in sync.
*/
#define pure_initcall(fn) __define_initcall(fn, 0)
#define core_initcall(fn) __define_initcall(fn, 1)
#define core_initcall_sync(fn) __define_initcall(fn, 1s)
#define postcore_initcall(fn) __define_initcall(fn, 2)
#define postcore_initcall_sync(fn) __define_initcall(fn, 2s)
#define arch_initcall(fn) __define_initcall(fn, 3)
#define arch_initcall_sync(fn) __define_initcall(fn, 3s)
#define subsys_initcall(fn) __define_initcall(fn, 4)
#define subsys_initcall_sync(fn) __define_initcall(fn, 4s)
#define fs_initcall(fn) __define_initcall(fn, 5)
#define fs_initcall_sync(fn) __define_initcall(fn, 5s)
#define rootfs_initcall(fn) __define_initcall(fn, rootfs)
#define device_initcall(fn) __define_initcall(fn, 6)
#define device_initcall_sync(fn) __define_initcall(fn, 6s)
#define late_initcall(fn) __define_initcall(fn, 7)
#define late_initcall_sync(fn) __define_initcall(fn, 7s)
原来module_init初始化是比较靠前的,这样我就将
module_init(wk2xxx_init);
修改成
late_initcall_sync(wk2xxx_init)
结果成功!可以正常地在开机的时候,正常启用wk2132驱动了。
//
这篇关于解决linux的驱动用insmod 方法测试可以,但静态编译到内核不能正确使用的问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南