????linux?????????????led??????????????????飩
???????????? ???????[ 2015/1/15 11:08:10 ] ??????????????? Linux ??????
???????????????????????Щ????s3c2410_gpio_setpin????????????????????????????????????????????
?????????????Щ????????????linux????arm??????????????????Щ??????????????????????????????????????????????????????д?????cool??????????????????δ??????????????????????Ч????????????ó?????C++??C?????У????????C++??Ч???????и????????????????ò?????????????????????????????????????????????????????????С??????Ч????????????????????????????????????????
?????????????????????????????????????????ioctl????????????heatnan_leds.ioctl?????????led??
???????????Щ??????????????????????????????????豸???????Щ?б????????????
????×××××××××××××××××××???????????????la??linux?????????о???????@
????????????????led???????????????????????д???????????????????????????????????????????????????????????????д?????ó???о???
????1 #include<linux/kernel.h>
????2 #include<linux/module.h>
????3 #include<linux/miscdevice.h>
????4 #include<linux/gpio.h>
????5 #include<linux/fs.h>
????6 #include<linux/init.h>
????7 #include<mach/regs-gpio.h>
????8 #include<mach/hardware.h>
????9
????10 #define DEVICE_NAME "heat_leds"
????11
????12
????13 static unsigned long led_table []= {
????14 S3C2410_GPB(5)??
????15 S3C2410_GPB(6)??
????16 S3C2410_GPB(7)??
????17 S3C2410_GPB(8)??
????18 };
????19 static unsigned int led_cfg_table []={
????20 S3C2410_GPIO_OUTPUT??
????21 S3C2410_GPIO_OUTPUT??
????22 S3C2410_GPIO_OUTPUT??
????23 S3C2410_GPIO_OUTPUT??
????24 };
????25 static int heatnan_leds_ioctl(
????26 struct inode *inode??
????27 struct file *file??
????28 unsigned int cmd??
????29 unsigned long arg)
????30 {
????31 if(arg<0||arg>3)
????32 {
????33 return -EINVAL;
????34 }
????35 switch(cmd)
????36 {
????37 case 0:
????38 case 1:
????39 {
????40 s3c2410_gpio_setpin(led_table[arg]??!cmd);
????41 return 0;
????42 }
????43 default:
????44 return -EINVAL;
????45
????46 }
????47 }
????48 static struct file_operations dev_fops={
????49 .owner = THIS_MODULE??
????50 .ioctl= heatnan_leds_ioctl??
????51 };
????52 static struct miscdevice misc={
????53 .minor=MISC_DYNAMIC_MINOR??
????54 .name=DEVICE_NAME??
????55 .fops=&dev_fops??
????56 };
????57 static int __init led_init(void)
????58 {
????59 int ret;
????60 int i;
????61 for(i=0;i<4;i++)
????62 {
????63 s3c2410_gpio_cfgpin(led_table[i]??led_cfg_table[i]);
????64 s3c2410_gpio_cfgpin(led_table[i]??0);
????65 }
????66 ret=misc_register(&misc);
????67 printk(DEVICE_NAME" initialized
");
????68 return ret;
????69 }
????70 static void __exit led_exit(void)
????71 {
????72 misc_deregister(&misc);
????73 }
????74 module_init(led_init);
????75 module_exit(led_exit);
????76 MODULE_LICENSE("GPL");
????????tmdд?????????????????????????鵽?????????????????????????????????????????????黯??????ū????????????
???????
??????????????????????????????????????lsmod??dev???????????????????У????????????????????
????????????????????????????????????led???????????led?????????led?????????????????????????????????????????????????
????????ж???????????????????????????????????????????????????μ??е????????????????
??????????????Щ???????????????????????????????
??????????????????????????????ū??????????????????????????????????????????????????飬?????л??
????????????иУ?
????1 ?????????????????о?????linux???е????????????????????????????????linux??????????????????????????????????д??????????????ν??
????2 ?о????????????????????裬????????????????????linux?????????????????linux?????????????????????????????????????????????????????????????????о??????????????????????????
????3 ????linux????????????????????????????????????????????????????????????????????
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11