首页 > 其他分享 >x210-2023-04-11

x210-2023-04-11

时间:2023-04-11 10:35:58浏览次数:43  
标签:11 SZ 头文件 函数 04 x210 卸载 gpio 但是

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再卸载即可。

 

标签:11,SZ,头文件,函数,04,x210,卸载,gpio,但是
From: https://www.cnblogs.com/weizhunie/p/17294779.html

相关文章

  • 04-分布式服务
    一、分布式服务体系(一)分布式系统概述​单体系统存在业务扩展性(任何业务的调整都需要发布整个系统)、性能扩展性(动态扩容对单体系统而言效率低下)、代码复杂度(修改一处代码容易引发连锁反应)的问题。​系统扩展性,指的是当系统的业务需求发生变化时,我们对现在系统改......
  • delphi 11.3 java.ioexception:cleartext http traffic [IP地址] not permitted
    要在AndroidManifest.xml添加如下属性即可:参考:HowtoFixCleartextHTTPTrafficnotPermittedinAndroid-TRENDOCEANS ......
  • 每日学习记录20230410_Bert
    20230410:BertHuggingface今天运行python-c'fromtransformersimportTFBertForTokenClassification'的时候有一个报错:Couldnotloaddynamiclibrary'libcudart.so.11.0'.查了一下发现是需要装CUDA软件,也就是英伟达调用GPU的软件,使用:condainstallcudatoolkit命......
  • 每日学习记录20230406_bert_and_torch
    20230407:tensorflowtransformertf.name_scope:这个函数会规定对象和操作属于那个范围,但是不会对“对象”的“作用域”产生任何影响,也就是不是全局变和局部变量的概念.这个东西有很多种用法:withtf.name_scope("loss"):#这个名字是随意指定,看你想干什么xentropy......
  • 每日学习记录20230403_yum
    20230403:yumyumprovides:是反查询,用于搜索某个文件在哪个软件包里面。rpm与yum的区别rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时。yum基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安......
  • C++-C11-chrono-获取当前时间、获取阶段时间
    C++-C11-chrono-获取当前时间、获取阶段时间Linux下使用C++11的chrono库获取时间。#include<chrono>#include<thread>#include<iostream>int64_tgetCurrentLocalTimeStamp(){std::chrono::time_point<std::chrono::system_clock,std::chrono::millisec......
  • 2023-04-10 网络流和最大流问题
    网络流和最大流问题1网络流和最大流问题阐述网络流基本概念网络流图中,从源点出发,在满足每条边容量限制的条件下,汇点t最多能接收多少流量s:sourcet:target网络流需要满足的限制容量限制平衡限制:除了源点s和汇点t,对于每一个点,流入量等于流出量从源点s流出的流量,一定......
  • 20230410 训练记录:最小瓶颈路 / lca
    初识最小瓶颈路其实是上海那道著名的铜牌题,其次就是P1396营救。P1967[NOIP2013提高组]货车运输/最小瓶颈路https://www.luogu.com.cn/problem/P1967\(\mathcalO(m\logm+(n+q)\logn)\)最大生成树(森林)两点间最小边权,直接在倍增lca向上爬的时候更新答案。问......
  • day04
    day04注释书写注释是一个非常好的习惯平时写代码一定要注意规范java中的注释有三种:单行注释只能注释一行文字多行注释可以注释一段文字文档注释JavaDoc/***//***┌───┐ ┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌......
  • PE安装系统Windows11
    本文主要讲在WePE下安装操作系统Windows11。 一、准备工作1、U盘,需大于8G2、微PE软件3、Windows11安装包 二、安装系统1、使用微PE制作软件,一键制作U盘启动盘,可以查看我以前的文章《使用微PE制作启动U盘》,并拷贝Windows11安装包到已经制作好的PEU盘中。 2、设置电脑......