x210-2023-04-11

发布者:和谐的24号最新更新时间:2025-01-09 来源: cnblogs关键字:卸载  驱动模块 手机看文章 扫描二维码
随时随地手机看文章

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 就完成包含,于是转换了一下思路通过找SZ_32宏被引用的源文件看sizes.h是如何被包含的,但是只找到和sh同层的源文件(这种直接包含同层的#include 当然不会出错),可是现在要找非同层源文件包含该头文件的例子,特别是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再卸载即可。

 


关键字:卸载  驱动模块 引用地址:x210-2023-04-11

上一篇:x210-2023-04-18
下一篇:x210-2023-04-04

推荐阅读最新更新时间:2026-03-25 10:44

micro2440 LED驱动(装载和卸载模块
micro2440所用光盘资料如下: 笔记本系统:fedora 13 (编译内核,配置交叉编译环境,详见手册) 台式机系统:windows XP 1、fedora13中: 2、建立一个C文件,取名为my_leds.c 输入以下代码: #include linux/miscdevice.h #include mach/regs-gpio.h #include linux/fs.h #include linux/pci.h #define DEVICE_NAME myleds static unsigned long led_table = { S3C2410_GPB5, S3C2410_GPB
[单片机]
X210串口配置与stdio移植
串口控制器初始化关键步骤   (1)初始化串口的Tx和Rx引脚所对应的GPIO(查原理图可知Rx和Rx分别对应GPA0_1和GPA0_0)   (2)GPA0CON(0xE0200000),bit = 0b0010 bit = 0b0010   (3)初始化这几个关键寄存器UCON0 ULCON0 UMCON0 UFCON0 UBRDIV0 UDIVSLOT0 主要的几个寄存器   (1)ULCON0 = 0x3 // 0校验位、8数据位、1停止位   (2)UCON = 0x5 // 发送和接收都是polling mode   (3)UMCON0 = 0x0 // 禁止modem、afc   (4)UFCON0 = 0x0 //
[单片机]
<font color='red'>X210</font>串口配置与stdio移植
X210(s5pv210)中断系统
1.SoC对中断的实现机制:异常向量表 (1)异常向量表是CPU中某些特定地址的特定定义。当中断发生的时候,中断要想办法通知CPU去处理中断,怎么做到?这就要靠异常向量表。 (2)在CPU设计时,就事先定义了CPU中一些特定地址作为特定异常的入口地址(譬如定义0x00000000地址为复位异常向量地址,则发生复位异常时CPU会自动跳转到0x00000000地址去执行指令。又譬如外部中断对应的异常向量地址为0x30000008,则发生外部中断后,CPU会硬件自动跳转到0x30000008地址去执行指令。)如 (3)以上讲的是CPU硬件设计时对异常向量表的支持,下来就需要软件支持了。硬件已经决定了发生什么异常CPU自动跳转PC到哪个地
[单片机]
<font color='red'>X210</font>(s5pv210)中断系统
arm开发板实现U盘自动挂载和卸载
原理先不讲,先给各位看官看一下实现的过程: 第一步: 配置内核Makefile 【2.6.22.6版本内核】 make menuconfig General setup ---- Configure standard kernel features (for small systems) ---- | | --- Load all symbols for debugging/ksymoops | | Include all symbols in kallsyms | | Do an extra
[单片机]
arm开发板实现U盘自动挂载和<font color='red'>卸载</font>
买不买表都一样 Apple Watch应用无法卸载
     全新的iOS 8.2系统已于3月10日正式发布,修复Bug之余还增加了对Apple Watch的支持,但是不少用户发现桌面上出现了一款全新的应用,而且它还无法删除。   为了增强与Apple Watch之间的关联,苹果特别在桌面上设计了独立的Apple Watch应用,通过它可与手表配对,可直接下载专属应用,也可以浏览Apple Watch宣传片,了解更多其功能用途,但是对于不打算购买手表的用户来说,它没有任何用处。 Apple Watch无法删除 Apple Watch无法删除   大多数用户都不能接受强制植入软件的行为,且由于iOS系统的特殊性,想删除它必须越狱,但前不久太极团队刚刚发表声明称iOS 8
[手机便携]
采用STSPIN32G4的高功率密度伺服电机驱动模块化方案
摘要 伺服驱动应用市场对尺寸、功率密度和可靠性均提出严苛要求,这使得设计稳健解决方案充满挑战。意法半导体近期发布的EVLSERVO1参考设计以其紧凑结构和强大性能精准应对这一领域需求。通过系统级优化及采用STSPIN32G4等旗舰器件(该先进电机驱动器集成Cortex ® -M4微控制器),我们成功实现了可向电机提供3kW功率的逆变器,且具备优异的开关性能与热性能。该设计通过基于硬件和软件的多重保护机制强化可靠性,在异常情况下能确保驱动器与电机均处于安全状态,同时保持最大灵活性。本文详细阐述EVLSERVO1设计,为终端应用设计师构建最优伺服驱动解决方案提供参考与指引。 引言 近年来,大功率电机驱动解决方案需求持续增长
[工业控制]
采用STSPIN32G4的高功率密度伺服电机<font color='red'>驱动</font>器<font color='red'>模块</font>化方案
FPGA FOC驱动编码器模块介绍
一. 简介 在使用有感FOC算法的时候,离不开使用编码器来获取电机角度,编码器的种类非常多,常见的有AS5600、AS5047P和MT6835等等,它们的驱动方式可以分为IIC、SPI、ABZ和HALL,其中最简单的就是ABZ方式了,因为它对于任意编码器来说,驱动方式都是一样的,只需要将脉冲对应的角度分辨率修改一下即可,而IIC和SPI则会根据不同的芯片,内部寄存器地址和位宽的不一样,驱动上会存在一些差异,针对这种驱动方式,如何能够在更换芯片后,对原工程的改动量最小,代码开发量最小,这正是本篇文章所要介绍的内容。 二. 编码器模块介绍 在多路FOC驱动板上,一共是支持了两种编码器和两种角度获取方式,分别是AS5047P和MT683
[嵌入式]
FPGA FOC<font color='red'>驱动</font>编码器<font color='red'>模块</font>介绍
一个小巧简单易用的事件驱动型按键驱动模块
1. MultiButton 本期给大家带来的开源项目是 MultiButton,一个小巧简单易用的事件驱动型按键驱动模块,作者 0x1abin,目前收获 222 个star,遵循 MIT 开源许可。 这个项目非常精简,只有两个文件,可无限量扩展按键,按键事件的回调异步处理方式可以简化程序结构,去除冗余的按键处理硬编码,让你的按键业务逻辑更清晰。 MuliButton 支持如下的按钮事件: 事件说明PRESS_DOWN按键按下,每次按下都触发PRESS_UP按键弹起,每次松开都触发PRESS_REPEAT重复按下触发,变量repeat计数连击次数SINGLE_CLICK单击按键事件DOUBLE_CLICK双击按键事件LONG_RR
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved