x210-2023-04-11

1、在卸载驱动模块时出现提示:rmmod: chdir(2.6.35.7): No such file or directory,需要到/lib/modules下创建2.6.35.7这个文件夹,但是创建好后再尝试卸载仍不成功,于是按照网上资料检查/sbin底下是否有rmmod这个命令,检查过后确定有该命令所以应该不是这个问题,然后又看到有资料说要复制你的.ko文件到新创建的这个2.6.35.7文件夹下,但操作完发现还是卸载不成功,再然后有资料说rmmod时不能像加载驱动模块时一样写全完整文件名(也就是不能带上后缀.ko),尝试了一下发现可以卸载了。

 2、前面提到过笔记本开启虚拟机后内存不太够导致鼠标USB插上无法使用,所以一直在使用的触控,但是纯触控在SI中编辑代码实在不太方便,所以中间想测试一下有没有类似vi的快捷键,期间误操作导致插入了中文格式的字符(因为测试快捷键时有用到shift,但是从下图81行完全看不出来是哪个,分号?看起来不像是这里原因而且重新打英文分号也没解决),没有办法于是重新写了一行(放在第82行),但是再次编译还是说这附近出错,于是81和82行都给删掉直接编译,这次没问题了,然后再补回printk语句。

3、在《第七天 01 led驱动之gpio操作函数实现》中使用的平台是s5p6818,其中用到的nxp_soc_gpio_set_io_func()是为了指定gpio的复用功能,在s5pv210上是不存在该函数的,找到较为匹配的函数是s3c_gpio_cfgpin(),查找的思路是看mach-smdkc110.c中用到gpio的内容(因为现在kernel是三星官方那个,Makefile已经使用的是mach-smdkc110.o,所以重点落在mach-smdkc110.c),例如spi初始化看它用到哪些gpio函数,再就是搜索网上关于S5PV210的GPIO用到的所有驱动函数介绍;另一点需要注意的就是根据所用到的函数来添加对应的头文件(因为已经不是在实现驱动框架代码了,所以开始需要根据不同平台特性来引用头文件了),但是从这一点也可以看出,使用平台相关的、已封装好的函数它的坏处就在于换平台后代码不通用,因为所用函数是平台相关的,用这些函数时还要逐个包含对应头文件,而且针对各外设不一定都提供有封装好的函数可以使用(一般外设如GPIO就有封装好的函数可用,特殊些的外设就没有提供函数,所以相对来说不通用),所以就引出了后面更通用的ioremap框架(可以将需要操作的外设其对应的寄存器整块映射出来进行操作,操作函数基于更通用的writel、readl、iowrite32、ioread32)。

4、在IO内存映射所用ioremap()函数中填写映射长度时需要考虑到总长应该是最后一个地址还需加4,因为最后一个寄存器本身还有4字节的长度,然后根据加4以后的长度选择一个最靠近的SZ_*宏(如SZ_32),但是刚开始选用的SZ_32宏来自sh/include/asm/sizes.h,出现头文件包含出错,由于现在平台s5pv210是在mach底下,和sh不是同一层,无法直接通过#include <asm/sizes.h>就完成包含,于是转换了一下思路通过找SZ_32宏被引用的源文件看sizes.h是如何被包含的,但是只找到和sh同层的源文件(这种直接包含同层的#include <asm/sizes.h>当然不会出错),可是现在要找非同层源文件包含该头文件的例子,特别是s5pv210平台底下某些文件引用该头文件的例子,但是由于SZ_32找不到,下个思路就是换成SZ_64、SZ_128、SZ_256,然后找SZ_256时发现它在一个s5pv210平台的某个头文件也有,所以最后改换成找到的这个头文件。

5、编译提示ioremap的第一个参数需要的是整型但传进来的是指针,表面上看,都会以为S5PV210_GPJ0_BASE这个宏应该是地址,而且看了该宏前两层嵌套也没有指针内容出现,但是随着追踪进去看的层数越多就能发现有使用了指针,所以这里尝试给ioremap传第一个参数时进行强转并取出地址,但是还是不可行,虽然编译通过,但是实际测试时直接跑飞,最后查看了一下这个宏展开到最后引用的基地址却是一个虚拟地址,但是查找了一会没有发现更好的关于GPIO基地址的宏,于是直接自己宏定义了GPJ0基地址进行使用。

 

 

 6、由于测试驱动模块过程不小心输入了没有在应用层指定的字符,导致出现无法卸载模块:rmmod: remove 'led_drv': Resource temporarily unavailable,使用top命令(退出top使用ctrl+c)找到app对应的PID,执行kill -9 PID再卸载即可。

 

posted @ 2023-04-11 10:20  migui  阅读(54)  评论(0编辑  收藏  举报