完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
mdev目录更改导致驱动insmod后无法被自动创建/dev节点 分析和解决: 1. 在仔细检查自己写的驱动和使用课程老师写的驱动后结果依旧是无法在/dev下创建xyz节点,但是在/sys/class目录下驱动注册的class和class_device都在,那么基本可以肯定驱动是没有问题的。 2. 回忆课程《006_u-boot_内核_根文件系统(新1期_2期间的衔接)视频第004课_根文件系统第004节_构建根文件系统之构建根文件系统 》,知道busybox中的mdev程序会在驱动加载后(热插拔)根据驱动在/sys/class目录下创建的信息自动在/dev目录下给该驱动创建驱动指定的设备节点,所以进一步怀疑mdev的问题。 3. 求助课程微信群,得到韦老师的指导,在根文件系统中执行mdev -s命令发现没有报错,这可以确定mdev程序是没有问题的,ls /dev/xyz 发现节点出现了,成功了。 //此处是第一张图。请指导的朋友教一下怎么在文章内插入图片? 4. 可是为什么并没有向老师视频里面那样挂载驱动后自动创建设备节点呢? 既然mdev -s能创建节点,说明mdev程序本身没问题,那是不是哪里配置错误了呢? 继续回忆课程《006_u-boot_内核_根文件系统(新1期_2期间的衔接)视频第004课_根文件系统第004节_构建根文件系统之构建根文件系统 》,构建根文件系统时,对mdev的只在etc/init.d/rcS中配置过, ``` # cat /etc/init.d/rcS #mount -t proc none /proc mount -a mkdir /dev/pts mount -t devpts devpts /dev/pts echo /bin/mdev > /proc/sys/kernel/hotplug mdev -s # ``` 问题来了,奇怪的是,在根文件/bin目录并没有发现mdev,可是刚才执行mdev -s并没有报错,那么只可能是mdev在其他目录,之后果然在***in目录下找到了mdev。然后修改 etc/init.d/rcS,将mdev的所在目录改成***in。 //此处是第二张图片。 修改完后,重启开发板(注意:一定要重启,否则修改不生效,因为etc/init.d/rcS实在开机阶段被执行的),重新insmod加载驱动,这回节点/dev/xyz 果然被自动创建了! //此处是第三章图片。 5. 为什么mdev会在***in目录,而不是像老师视频里那样在bin目录呢? 这个问题我个人怀疑跟我修改了busybox顶层Makefile有关,因为我用的是课程自带的ubuntu16.04,所以在编译busybox的时候遇到了如下问题,参考了网上的解决方案(后来群里同学告知课程文件中也有:005_ARM裸机1期加强版虚拟机环境ubuntu16.04ubuntu16.04配置内核和busybox出现错误的解决方法.docx),有可能跟这些修改有关,因为是需改了makefile,所以我猜测会影响编译结果。不过既然是mdev的目录换了,这不影响我学习,只是上面分析和解决问题的方法值得总结和学习。 我遇到的问题和解决方案如下: ①. 编译busybox-1.7: 出现错误: scripts/kconfig/Makefile:14: recipe for target 'menuconfig' failed 解决方法:安装2个库 sudo apt-get install libncurses5-dev libncursesw5-dev ②. 编译busybox-1.7.0出现如下错误: busybox-1.7.0$make menuconfig Makefile:405:*** mixed implicit and normal rules: deprecated syntax Makefile:1242:*** mixed implicit and normal rules: deprecated syntax make:*** No rule to make target 'menuconfig'. Stop. 分析原因: 新版Makefile不支持这样的组合目标:config %config(一个有通配符,另一个没有通配符) 解决方法: 要么把config %config拆成2个规则,要么把其中一个目标去掉。 所以, a.修改busybox-1.7.0 顶层Makefile 405行: config%config: scripts_basic outputmakefile FORCE 改为: %config:scripts_basic outputmakefile FORCE b.修改busybox-1.7.0 顶层Makefile 1242行: /%/: prepare scripts FORCE 改为: %/:prepare scripts FORCE |
|
相关推荐
4个回答
|
|
|
|
奇怪,我跟着老师做的,就是在/***in目录下的重定向的热拔插,并不是像你说的老师视频目录是/bin下面的。难道我们视频不一样?
|
|
|
|
|
|
|
|
我知道了 我是在/etc/init.d/rcs 里面hotplug打字打错了
|
|
|
|
只有小组成员才能发言,加入小组>>
197个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2157 浏览 6 评论
1964 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4521 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 09:51 , Processed in 0.682860 second(s), Total 82, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号