|
内核移植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 |
|