GPIO驱动写错,导致内存出现问题,系统死掉
来源:互联网 发布:3d相机软件 编辑:程序博客网 时间:2024/04/29 15:28
解决方法:
请教了别人,噶偶我让我用nfs挂载,但搞了半天,只是把PC上的文件挂载到了开发板上,比较郁闷
后来在系统快起的时候kill掉自启动的QT程序,卸载自己装载的驱动,然后用FLASHFXP进入系统文件目录(原来不进行上面的操作进入不来了),然后打开rcs文件修改开机启动项,搞定了。
需要学习的:1.NFS文件系统的挂载, 2.直接操作寄存器来设置GPIO口时最好用ioremap来设置
这个问题解决后又回到了起点,写一个GPIO的驱动完成读取数据。
- GPIO是与硬件体系密切相关的,linux提供一个模型来让驱动统一处理GPIO,即各个板卡都有实现自己的gpio_chip控制模块:request, free, input,output, get,set,irq...然后把控制模块注册到内核中,这时会改变全局gpio数组:gpio_desc[]. 当用户请求gpio时,就会到这个数组中找到,并调用这个GPIO对应的gpio_chip的处理函数。gpio实现为一组可用的 gpio_chip, 由驱动传入对应 gpio的全局序号去 request, dataout ,datain, free. 这时会调用gpio_chip中具体的实现。
- gpio是一组可控件的脚,由多个寄存器同时控制。通过设置对应的寄存器可以达到设置GPIO口对应状态与功能。数据状态,输入输出方向,清零,中断(那个边沿触发), 一般是一组(bank)一组的。
- 寄存器读写函数: __raw_writel() __raw_writeb() __raw_readl() __raw_readb()
原来写的驱动是直接对寄存器操作的,也没有进行内存映射:iormap(),导致内存奔溃的,在网上找到了上面一段话,可以直接内核的接口操作GPIO口。现在也有点理解:驱动是基于内核的,应用层是基于任务的
GPIO口驱动的编写:
1.申请GPIO口;2.注册设备;3.创建GPIO的sysfs的相关文件
http://blog.chinaunix.net/uid-27717694-id-3624294.html
自己的程序中的GPIO驱动应用:
参考http://blog.csdn.net/laoyuliang/article/details/7373075
#include <linux/gpio.h>
//初始化GPP引脚8,设置为输入
s3c_gpio_setpull(S3C64XX_GPP(8),S3C_GPIO_PULL_UP);
s3c_gpio_cfgpin(S3C64XX_GPP(8),S3C_GPIO_INPUT);
s3c_gpio_setpull(S3C64XX_GPP(8),S3C_GPIO_PULL_UP);
s3c_gpio_cfgpin(S3C64XX_GPP(8),S3C_GPIO_INPUT);
再用gpio_get_value(/*GPIO口*/);获取相应GPIO口的值即可
- GPIO驱动写错,导致内存出现问题,系统死掉
- 自己动手写TCC7901的GPIO驱动
- 自己动手写TCC7901的GPIO驱动
- 内存MCE错误导致系统崩溃的问题分析
- Cache占用过多内存导致Linux系统内存不足问题排查
- “系统和压缩内存”导致电脑卡顿问题
- Cache占用过多内存导致Linux系统内存不足问题排查
- Cache占用过多内存导致Linux系统内存不足问题排查
- EFM32的GPIO驱动蜂鸣器的问题
- Win8.1慎用优化,可能导致安装驱动出现数据无效的问题。附解决方法
- GPIO驱动
- gpio驱动
- C#调用mfc写的Dll出现调用导致堆栈不对称问题
- 怎样写基于GPIO子系统的外接传感器的驱动
- AIX系统NONCOMP内存占比过高导致换页内存使用过多问题
- 内存对齐,导致char型数组指针转化为float型指针出现的问题
- oracle数据量过大导致死掉的解决方法
- pin导致路由器死掉的解决方法
- Oracle数据库database link的使用
- opencv计时
- java 中枚举类型,整型,字符串之间转换
- The Most Widely Used Java Libraries
- Python Tkinter Spinbox控件
- GPIO驱动写错,导致内存出现问题,系统死掉
- 黑马程序员_集合框架概述
- C语言的数组初始化
- 记录备忘,Windows2003 vdi 转 img后蓝屏的解决方法
- MySQL错误代码大全
- left join 、right join 等各种连接方式的区别
- 怎样部署使用iis,菜鸟级的,仅供参考
- Myeclipse批量修改整个工程的编码格式为UTF-8
- 《SLIC Superpixels》阅读笔记