当前位置:  技术问答>linux和unix

挂载文件系统时,输出的GPIO引脚莫名的输出低电平,请大家帮忙进来看看

    来源: 互联网  发布时间:2016-09-28

    本文导语:  我使用at91rm9200,在YL9200开发板的基础上定制了自己的一个板子,系统和文件系统都是使用原开发板自带的:linux2.6.13和Cramfs,里面用QT2.3.7做了一个图形界面程序。我自己添加了一个GPIO驱动,用于控制IO的输出和输入...

我使用at91rm9200,在YL9200开发板的基础上定制了自己的一个板子,系统和文件系统都是使用原开发板自带的:linux2.6.13和Cramfs,里面用QT2.3.7做了一个图形界面程序。我自己添加了一个GPIO驱动,用于控制IO的输出和输入,现在输入没有问题,输出也可以正常控制,现在的问题是:我在驱动中已经设定输出和设置高电平了(我的蜂鸣器是低电平响)。在系统启动在下面过程时,蜂鸣器响,说明与蜂鸣器相连的引脚是低电平,这点我很困惑???在挂载文件系统的时候,有什么改变GPIO的输出电平吗?此时应该bios已经过去了,我的GPIO驱动也挂载完毕了吧?请大家解惑。
Freeing init memory: 92K这句开始,蜂鸣器就响啦--!

Freeing init memory: 92K

RootDisk
mount tmpfs filesystem to /tmp
cardmgr[754]: cannot access /lib/modules/2.6.13: No such file or directory
cardmgr[754]: no sockets found!
unable to open mouse device
640x480-16bpp
fail to create MiniGUI.cfg
/etc/init.d/rcS: 113: /usr/sbin/chksd: not found
[1;34mbin[0m      [1;34metc[0m      [1;34mlib[0m      [1;34mmnt[0m      [1;34mproc[0m     [1;34msbin[0m     [1;34msys[0m      [1;34musr[0m
[1;34mdev[0m      [1;34mhome[0m     [1;36mlinuxrc[0m  [1;34mopt[0m      [1;34mroot[0m     [1;32mset_cfg[0m  [1;36mtmp[0m      [1;34mvar[0m
[H[JSIOCSIFADDR: No such device
SIOCSIFNETMASK: No such device
Hello, arm-linux!
/etc/init.d/rcS done.


BusyBox v1.00 (2005.05.21-05:56+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

[9;0][?33l[?25l][?33l[?25lCould not read calibration: /etc/pointercal


当启动我的程序,我Open我的驱动时,蜂鸣器就不响了,因为我在Open中将引脚电平至高了
static int  gpio_open(struct inode *inode, struct file *filp) 
{
        int minor;
        minor = MINOR(inode->i_rdev);

at91_set_gpio_value(AT91_PIN_PA1,1);

        gpio_devices[minor]++;
        return 0;
}


驱动的init代码中我也强制至高了:
static int __init gpio_init(void)
{
register_chrdev(IOPORT_MAJOR, "gpiotest" ,&gpio_ctl_fops);
at91_set_gpio_output(AT91_PIN_PA1,1 ); //PA1设置成输出
at91_set_gpio_value(AT91_PINN_PA1,1);--已经强制至高了???
       return 0;
}


大家帮忙看看呗,现在系统一启动就嗡嗡响,好闹心啊,莫名其妙

|
应该是在init和open之间有被其他驱动操作到?在init函数定义为late_initcall(),看启动还会一直响?

|
文件系统是独立于硬件的,不会修改GPIO的状态。

你可以在/etc/init.d/rcS中加上一个小程序,每有个动作就检测一下gpio的状态,看看是被哪个程序或模块修改了。

|
是不是寄存器默认的就是为低?

|
建议:
1、查查datasheet,看看这个GPIO的引脚还可以用于什么?再查查相关的驱动程序。
2、在这个GPIO和蜂鸣器之间加一个锁存器。让GPIO引脚的变化不会影响到蜂鸣器。(因为这个引脚很可能是和其他设备共用的)

|
关于驱动启动的顺序,给你一份参考文档,你可以看看:
http://hi.baidu.com/serial_story/blog/item/d40d49c6907212129c163ded.html

|
驱动的初始化声明module_init(gpio_init)的?改为late_initcall(gpio_init)试试?

|

支持!

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • mount命令(linux操作系统)挂载卸载文件系统(cifs,光驱,nfs等)方法介绍
  • 两块硬盘能不能同时挂载在同一个挂载点!!!
  • 系统启动到挂载根档案的时候出现错误,无法挂载根档案。高手进!!!在线等。
  • 在rc.local里mount /dev/sda5 /media/d 增加挂载windows磁盘的命令。开机后挂载成功了,在桌面上出现了一个硬盘图标。
  • 关于linux分区挂载的问题
  • linux的u盘挂载问题
  • 挂载,关于fstab的格式问题
  • 挂载光驱的问题
  • 挂载文件系统后无法正常打印信息
  • hi 在Linux下 挂载u盘
  • SOLARIS 如何把新的硬盘如何挂载
  • 为什么挂载的分区重启后就卸载呢????
  • 关于usb挂载的问题!
  • 问一个关于挂载u盘的问题?
  • 挂载文件系统的问题
  • 利用 mount 函数 如何 挂载 ntfs 分区,如何调用(不是命令,是 MOUNT 函数)
  • 还是关于挂载的!在问问
  • linux挂载硬盘
  • 挂载新分区
  • 分区挂载问题!
  • 利用 mount 函数 如何 挂载 USB 设备 ntfs 分区?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3