irpas技术客

IMX6ULL 学习bug记载_小朱一定要快速发论文

大大的周 4835

驱动注册出现 /lib/modules/4.1.15 # insmod chardevbase.ko

[ 94.200118] chardevbase: version magic '4.1.15 SMP preempt mod_unload modversions ARMv6 p2v8 ’ should be '4.1.15-g06f53e4 SMP preempt mod_unload modversions ARMv7 p2v8 ’ [ 94.216743] chardevbase: version magic '4.1.15 SMP preempt mod_unload modversions ARMv6 p2v8 ’ should be '4.1.15-g06f53e4 SMP preempt mod_unload modversions ARMv7 p2v8 ’ insmod: can’t insert ‘chardevbase.ko’: invalid module format magic版本不一致, 解决方法:尊重别人的博客

NFS挂载 串口打印信息提示 VFS: Unable to mount root fs via NFS, trying

floppy.或者或者报错 Loading:*ww ERROR:File lookup fail 的,或者 mount.nfs: mount system call failed 可能就是 uboot 支持的协议与 NFS 支持的协议不同导致报错, 解决方法: 可以进行如下修改: 在 ubuntu 的/etc/default/nfs-kernel-server 文件中,按照如下图箭头所指的部分进行修改,改 完后保存退出,再执行指令 sudo service nfs-kernel-server restart 重启 NFS 服务。

Starting kernel …卡住

解决:查看启动内核和设备树文件是否放在自己要启动的位置,检查启动内核和设备树文件名词是否与环境变量设置的一致。

depmod: can’t change directory to ‘lib/modules/4.1.15-g52f6b26’: No such file or directory

解决方法:使用命令uname -r看内核版本是多少,如: 把文件夹名称改为:4.1.15-g52f6b26解决

驱动开发添加类和设备仍不能自己创建节点 file /dev/newled2 open failed!

解决:检查类和设备里注册的名称是什么 如:

class_create(THIS_MODULE, LED_NAME); device_create(led_class, NULL, devid, NULL, LED_NAME);

这里注册的名称为LED_NAME(“led”),那么自动创建的节点名称就是led 打开驱动文件也应是/dev/led 而不是xxx.ko里的名称“xxx”。

**

make 错误:code model kernel does not support PIC mode scripts/Makefile.build:264: recipe for target ‘/home/jemee/linux/IMX6ULL/Linux_Drivers/9_semaphore/atomic.o’ failed

** 内核代码makefile里未指定编译器名称:

挂载驱动 提示Unable to handle kernel NULL pointer dereference at virtual address 00000000 pgd = 884dc000 驱动框架挂载节点为空,一般是名字没有定义

隐式声明函数‘of_get_named_gpio’ [-Werror=implicit-function-declaration]

解决:函数没写对或者头文件没写

tftp Loading:T T T T T T T T

除了tftp没设置好,还可能是电脑window的ip和开发板ip冲突,或者tftp文件夹权限不够或者tftp文件夹在共享文件夹下

warning: ‘struct protocol’ declared inside parameter list will not be visible outside of this definition or declaration int db_broadcast(int connfd, struct protocol *msg);

题目中的警告是gcc产生的: 当函数参数中有stuct XXX类型, 且该类型的定义出现在参数声明的后面.

make install XXXXXX command not found

原因如下: 1.添加arm交叉编译器目录到PATH中是放在~/.bash_profile里的,这是用户的配置文件,用户为普通用户。 2.执行make install时,加了sudo前缀,变成了root的工作环境和root的权限。 根据以上两点,make install是在root下做的,而arm-linux-ranlib在wmm用户的工作环境中才能找到。所以产生了这里的错误。 那我既要取得root权限,又要具有当前用户的工作环境 解决如下: 执行make install之前,先用下su命令取得root权限。然后再执行make install。 su 和 sudo 的区别: 1.共同点:都是root用户的权限; 2.不同点:su仅仅取得root权限,工作环境不变,还是在切换之前用户的工作环境;sudo是完全取得root的权限和root的工作环境。 这里说一下 su -root和su root的区别:

su 后面不加用户是默认切到 root

su 是不改变当前变量

su - 是改变为切换到用户的变量

也就是说su只能获得root的执行权限,不能获得环境变量

而su -是切换到root并获得root的环境变量及执行权限

此时,已经可以进行root权限的操作了。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #imx6ull #学习bug记载 #BUG #问题记录