天嵌 ARM开发社区

 找回密码
 注册
查看: 2156|回复: 2

纠结一下_蜂鸣器测试程序

[复制链接]
rqmini 发表于 2011-1-14 10:42:37 | 显示全部楼层 |阅读模式
内核移植Step 25、PWM控制器的驱动编写
测试程序部分源码:
for(i=0;i<2000;i++)
        {
                scanf("%d",&temp);
                printf("temp= %d \n",temp);
                ioctl(fd, temp, 4);               
                if(temp == 0)
                        break;
        }
问题:
1.其中我发现ioctl(fd, temp, 4)中temp不是控制频率,而是4表示当前频率。这个与Qt的蜂鸣器测试程序中ioctl(fd, 1, temp)吻合。那这个程序是不是弄错了?

2.接上,那么ioctl(fd, 1, temp)中的1表示什么意思?网上查找无果。主要是这个问题
3.网上大多数为ioctl(fd, temp),但是当temp为0时,提示一大串信息,这样表示关闭了蜂鸣器吗?
因为我看Qt的蜂鸣器测试中初始化用ioctl(fd, 1, temp),关闭的时候用的ioctl(fd, 0),有何区别?

附问题3信息
Division by zero in kernel.
Backtrace:
[<c0039fd4>] (dump_backtrace+0x0/0x10c) from [<c02aaad0>] (dump_stack+0x18/0x1c)
r7:00000000 r6:00000000 r5:00500009 r4:f4300000
[<c02aaab8>] (dump_stack+0x0/0x1c) from [<c003a6d4>] (__div0+0x18/0x20)
[<c003a6bc>] (__div0+0x0/0x20) from [<c0139c38>] (Ldiv0+0x8/0x10)
[<bf06a044>] (st2440_pwm_ioctl+0x0/0xb8 [Smile_pwm]) from [<c00a2f3c>] (vfs_ioctl+0x78/0x80)
r7:00000000 r6:00000001 r5:00000000 r4:c3b12f80
[<c00a2ec4>] (vfs_ioctl+0x0/0x80) from [<c00a3210>] (do_vfs_ioctl+0x2a4/0x544)
r7:00000000 r6:00000008 r5:c3b12f80 r4:00000008
[<c00a2f6c>] (do_vfs_ioctl+0x0/0x544) from [<c00a34f0>] (sys_ioctl+0x40/0x68)
[<c00a34b0>] (sys_ioctl+0x0/0x68) from [<c0035e60>] (ret_fast_syscall+0x0/0x2c)
r7:00000036 r6:bee356d0 r5:00080738 r4:00000000
embedsky_lhh 发表于 2011-1-14 11:27:03 | 显示全部楼层
PWM驱动中ioctl接口一个是控制频率一个控制脉宽的,至于具体控制那个,那看驱动ioctl是怎么写的。
天嵌_support1 发表于 2011-1-15 12:23:00 | 显示全部楼层
1# rqmini


1.其中我发现ioctl(fd, temp, 4)中temp不是控制频率,而是4表示当前频率。这个与Qt的蜂鸣器测试程序中ioctl(fd, 1, temp)吻合。那这个程序是不是弄错了?

答:这个只是个变量而言,两者名字相同并不代表是一个意思呀
你去看看源码的驱动,tq2440_pwm_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
第二个参数是用来开关蜂鸣器,第三个参数是用来调整
               tcntb
               tcmpb

2.接上,那么ioctl(fd, 1, temp)中的1表示什么意思?网上查找无果。主要是这个问题

答:第一中已经回答你
   1 或者 0 是用开关蜂鸣器

3.网上大多数为ioctl(fd, temp),但是当temp为0时,提示一大串信息,这样表示关闭了蜂鸣器吗?
因为我看Qt的蜂鸣器测试中初始化用ioctl(fd, 1, temp),关闭的时候用的ioctl(fd, 0),有何区别?
答:依然是第一中回答了你。ioctl的函数需要三个参数。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-8-21 12:43 , Processed in 1.029336 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表