linuxϵÄGPIOÇý¶¯
±àдÇý¶¯³ÌÐò£¬Ê×ÏÈÒªÁ˽âÊÇʲôÀàÐ͵ÄÉ豸¡£linuxϵÄÉ豸·ÖΪÈýÀ࣬·Ö±ðΪ£º×Ö·ûÉ豸£¬¿éÉ豸ºÍÍøÂçÉ豸¡£×Ö·ûÉ豸ÀàÐÍÊǸù¾ÝÊÇ·ñÒÔ×Ö·ûÁ÷ΪÊý¾ÝµÄ½»»»·½Ê½£¬´ó²¿·ÖÉ豸¶¼ÊÇ×Ö·ûÉ豸£¬Èç¼üÅÌ£¬´®¿ÚµÈ£¬¿éÉ豸ÔòÊÇÒÔ¿éΪµ¥Î»½øÐйÜÀíµÄÉ豸£¬È磬´ÅÅÌ¡£ÍøÂçÉ豸¾ÍÊÇÍø¿¨µÈ¡£
Æä´ÎÒªÁ˽âÓ¦ÓóÌÐòºÍÇý¶¯³ÌÐòµÄÇø±ð£¬Á½ÕßµÄÖ÷񻂿±ð·ÖΪÒÔÏÂÈýµã£º
1Èë¿Úº¯ÊýµÄÈÎÎñ²»Ïàͬ£¬Ó¦ÓóÌÐòÍê³ÉÒ»¸öÈÎÎñ£¬Çý¶¯Ö»Íê³É³õʼ»¯¹¤×÷£¬±ÈÈçÖжÏ
ÉêÇ룬¼Ä´æÆ÷ÉèÖ㬶¨Ê±Æ÷ÉèÖá£
2ÔËÐÐʱµÄcpuģʽ²»Ïàͬ£¬Çý¶¯¾ßÓкܸߵÄȨÏÞ£¬Ó¦ÓóÌÐòÊÇÔÚÓû§Ì¬ÏÂÔËÐУ¬¶øÇý
¶¯³ÌÐòÊÇÔÚÄÚºË̬ÏÂÖ´ÐС£
3 Çý¶¯³ÌÐò²»Äܵ÷ÓÃC¿âº¯Êý£¬ÄÚºËΪÇý¶¯³ÌÐòÌṩһЩº¯Êý¡£Èçprintk(KERN_NOTICE fmt, ##arg)£¬µÚÒ»¸ö²ÎÊýΪ´òÓ¡¼¶±ð£¬ÓÐÈçϵĴòÓ¡¼¶±ð£º
KERN_EMERG ÓÃÓÚ½ô¼±Ê¼þ,Ò»°ãÊÇϵͳ±ÀÀ£Ç°µÄÌáʾÐÅÏ¢
KERN_ALERT ÓÃÓÚÐèÒªÁ¢¼´²ÉÈ¡¶¯×÷µÄ³¡ºÏ
KERN_CRIT ÁÙ½ç״̬,ͨ³£Éè¼ÆÑéÖ¤µÄÓ²¼þ»òÈí¼þ²Ù×÷ʧ°Ü
KERN_ERR ÓÃÓÚ±¨¸æ´íÎó״̬.É豸Çý¶¯³ÌÐòͨ³£»áÓÃËü±¨¸æÀ´×ÔÓ²¼þµÄÎÊÌâ
KERN_WARNING ¾Í¿ÉÄܳöÏÖµÄÎÊÌâÌá³ö¾¯¸æ.ÕâЩÎÊÌâͨ³£²»»á¶ÔϵͳÔì³ÉÑÏÖØÆÆ»µ
KERN_NOTICE ÓбØÒªÌáʾµÄÕý³£Çé¿ö.Ðí¶à°²È«Ïà¹ØµÄÇé¿öÓÃÕâ¸ö¼¶±ð»ã±¨
KERN_INFO ÌáʾÐÔÐÅÏ¢.ÓкܶàÇý¶¯³ÌÐòÔÚÆô¶¯Ê±ÓÃÕâ¸ö¼¶±ð´òÓ¡Ïà¹ØÐÅÏ¢
KERN_DEBUG ÓÃÓÚµ÷ÊÔµÄÐÅÏ¢
u_long copy_from_user(void *to, const void *from, u_long len)£¬ÓÉÓû§Ì¬¿½±´µ½ÄÚºË̬£»
u_long copy_to_user(void * to, const void *from, u_long len)£¬ÓÉÄÚºË̬¿½±´µ½Óû§Ì¬¡£
¼øÓÚÒÔÉÏÇø±ð£¬Çý¶¯³ÌÐòÐèÒªÍê³ÉÒÔÏÂÈýµã»ù±¾¹¦ÄÜ£º
1£ºÒª¶ÔÉ豸½øÐгõʼ»¯ºÍÊͷʦÄÜÄ£¿é£¬¾ÍÈçÉÏÃæµÄ¼Ä´æÆ÷ÉèÖã¬ÖжϵÄÉêÇ룬ÏòÄÚºË×¢
²áÇý¶¯³ÌÐò£¨register_chrdev£¨£©£©£¬Ð¶ÔØÇý¶¯³ÌÐò£¨unregister_chrdev£¨£©£©¡£
2£ºÄܽøÐÐÊý¾Ý´«Ê䣬ÔÚread()£¬write()º¯ÊýÀï¾ßÌåʵÏÖ£¬Êý¾Ý´«Ê乤×÷¡£
3£ºÄܽøÐпØÖƲÙ×÷£¬¸øÓû§ÌṩµÄioctl£¨£©º¯ÊýÀï¿ÉʵÏÖһЩÓû§µÄÑ¡ÔñÐÔÉèÖù¦ÄÜ¡£
È·¶¨Ò»¸öÉ豸µÄÖ´Ðк¯Êý¼¯£¨½á¹¹Ì壩
static struct file_operations myGPIO_fops = {
owner: THIS_MODULE,
write: myGPIO_write,
read: myGPIO_read,
ioctl: myGPIO_ioctl,
open:
Ïà¹ØÎĵµ£º
£¨L2CAPÐÒé¼ò½é£¬L2CAPÔÚBlueZÖеÄʵÏÖÒÔ¼°L2CAP±à³Ì½Ó¿Ú£©
Ò»£ºL2CAPÐÒé¼ò½é£º
Logical Link Control and Adaptation Protocol(L2CAP)
Âß¼Á¬½Ó¿ØÖƺÍÊÊÅäÐÒé (L2CAP) ΪÉϲãÐÒéÌá¹©ÃæÏòÁ¬½ÓºÍÎÞÁ¬½ÓµÄÊý¾Ý·þÎñ£¬²¢Ìṩ¶àÐÒ鹦ÄܺͷָîÖØ×é²Ù×÷¡£L2CAP ³äÐíÉϲãÐÒéºÍÓ¦ÓÃÈí¼þ´«ÊäºÍ½ÓÊÕ×î´ó³¤¶ÈΪ 64K µÄ L2CAP Ê ......
Ò»£ºÇ°ÑÔ
×î½üÔÚÑо¿androidµÄsensor driver£¬Ö÷ÒªÊÇE-compass£¬ÆäÖÐÓõ½ÁËLinux input×Óϵͳ.ÔÚÍøÉÏÒ²¿´Á˺ܶàÕâ·½ÃæµÄ×ÊÁÏ£¬¸Ð¾õ»¹ÊÇÕâÆª·ÖÎöµÄ±È½ÏϸÖÂ͸³¹£¬Òò´Ë×ªÔØÒ»ÏÂÒÔ±ã×Ô¼ºÑ§Ï°£¬Í¬Ê±ºÍ´ó¼Ò·ÖÏí£¡
£¨ÕâÆª²©¿ÍÖ÷ÒªÊÇÒÔ¼üÅÌÇý¶¯ÎªÀýµÄ£¬²»¹ý½²½âµÄÊÇLinux Input Subsystem£¬¿ÉÒÔ×ÐϸµÄÑо¿Ò»Ï£¡£©
¼üÅÌÇý¶¯½«¼ì ......
linuxÇý¶¯ ×ÔÐýËøµÄÔËÓÃ
//hello.c
#define __NO_VERSION__
#include <linux/module.h>
#include <linux/config.h>
#include <linux/version.h>
#include <asm/uaccess.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#inc ......
1¡¢ ÈçºÎÔÚLinuxϵͳÏÂÌí¼ÓÒ»¸öÕÊ»§£ºÓû§ÃûΪstd02£¬ÃÜÂëΪpwd02?
£º#useradd std02
#passwd std02
³öÏÖÌáʾÊäÈë¿ÚÁîpwd02£¬Ôٴΰ´ÌáʾÊäÈëpwd02
Ò²¿ÉÒÔ:
#useradd -n std02 -p pwd02
2¡¢ н¨Ò»¸ö×ÓĿ¼/home/public£¬ÈÃËü±»ËùÓеÄÓû§¹²Ïí£¬¶øÇÒÓµÓÐËùÓÐȨÏÞ£¬µ«²»Äܱ»·ÇÊôÖ÷ɾ³ý£¿
£º#mkdir /home/public
#chm ......
make µÄÔËÐÐ
——————
Ò»°ãÀ´Ëµ£¬×î¼òµ¥µÄ¾ÍÊÇÖ±½ÓÔÚÃüÁîÐÐÏÂÊäÈëmakeÃüÁmakeÃüÁî»áÕÒµ±Ç°Ä¿Â¼µÄmakefileÀ´Ö´ÐУ¬Ò»Çж¼ÊÇ×Ô¶¯µÄ¡£µ«Ò²ÓÐʱÄãÒ²ÐíÖ»ÏëÈÃmakeÖØ±àÒëijЩÎļþ£¬¶ø²»ÊÇÕû¸ö¹¤³Ì£¬¶øÓÖÓеÄʱºòÄãÓм¸Ì×±àÒë¹æÔò£¬ÄãÏëÔÚ²»Í¬µÄʱºòʹÓò»Í¬µÄ±àÒë¹æÔò£¬µÈµÈ¡£±¾Õ½ھÍÊ ......