LinuxÏÂUSB´ÓÉ豸ʹÓÃgadget API
[ÈÕÆÚ£º2007-12-27]
À´Ô´£ºLinux¹«Éç ×÷ÕߣºÎ°Î°
×î½üÔÚ×öLinuxÏÂUSB´ÓÉ豸µÄÇý¶¯£¬³ÌÐòдµÄ²î²»¶àÁË£¬×öÒ»¸öÕûÀíС½á¡£»¶Ó½»Á÷,ÈçÓдíÎóÇëÖ¸Õý,лл!--Jason
Ò»¡¢USB´ÓÉ豸Çý¶¯½éÉÜ
USB×ÜÏßÉÏÖ÷ÒªÓÐÈýÀàÉ豸£ºÖ÷¿ØÖÆÆ÷£¨Host Controller£¬ such as EHCI¡¢UHCI¡¢OHCI£©¡¢¼¯Ï߯÷£¨hub£©ºÍÉ豸£¨device£©¡£Host controller£¨HC£©¸ºÔð×ÜÏߵĹÜÀí£¬ÊÇ×ÜÏßµÄÖ¸»Ó¹Ù£¬×ÜÏßÉÏÒ»Çд«Êä¶¼ÊÇÓÉHC·¢ÆðµÄ£¬Ö§³ÖOTGµÄDeviceÒ²ÄÜ·¢Æð´«Ê䣻HubÊÇ×ÜÏߵĽڵ㣬ÓÃÀ´À©Õ¹×ÜÏßÉϿɽÓÈëÉ豸µÄÊýÁ¿£¬¶ÔÓÚÇý¶¯À´ËµÊÇ͸Ã÷µÄ£»Device¾ÍÊǸ÷ÖÖ¸÷ÑùµÄÉ豸ÁË£¬Ã¿¸öÉ豸¶¼ÓÐ×Ô¼ºµÄ¹¦ÄÜ£¬±ÈÈçUÅÌ¡¢USBÉãÏñÍ·µÈµÈ¡£
LinuxÏÂÖ÷»ú¶ËUSBÉ豸µÄÇý¶¯£¨device driver£©±àдµÄ×ÊÁÏÓкܶ࣬LDD3ÖÐÓÐÏàÓ¦µÄ½éÉÜ¡£Ö÷ÒªÊÇͨ¹ýÄÚºËÖÐUSB coreÕâ¸öÄ£¿éÓëÉ豸½»»¥¡£±¾ÎÄÖ»½éÉÜÔËÐÐLinuxµÄǶÈëʽUSBÉ豸Çý¶¯µÄ±àд¡£ÒòΪHost¶ËÒѾʹÓÃÁËdevice driverÒ»´Ê£¬ÎªÁ˱ÜÃâ»ìÏý£¬Ê¹ÓÃUSB gadget driverÒ»´Î±íʾ´ÓÉ豸Çý¶¯¡£In USB protocol interactions, the device driver is the master (or client driver) and the gadget driver is the slave (or function driver).
......
Linux Ö¸Áî´óÈ«
cat cd
chmod chown
cp cut
Ãû³Æ£ºcat
ʹÓÃȨÏÞ£ºËùÓÐʹÓÃÕß
ʹÓ÷½Ê½£ºcat [-AbeEnstTuv] [--help] [--version] fileName
˵Ã÷£º°Ñµµ°¸´®Á¬½Óºó´«µ½»ù±¾Êä³ö£¨Ó©Ä»»ò¼Ó > fileName µ½ÁíÒ»¸öµµ°¸£©
²ÎÊý£º
-n »ò --number ÓÉ 1 ¿ªÊ¼¶ÔËùÓÐÊä³öµÄÐÐÊý±àºÅ
-b »ò --number-nonblank ºÍ -n ÏàËÆ,Ö»²»¹ý¶ÔÓÚ¿Õ°×Ðв»±àºÅ
-s »ò --squeeze-blank µ±Óöµ½ÓÐÁ¬ÐøÁ½ÐÐÒÔÉϵĿհ×ÐÐ,¾Í´ú»»ÎªÒ»ÐеĿհ×ÐÐ
-v »ò --show-nonprinting
·¶Àý£º
cat -n textfile1 > textfile2 °Ñ textfile1 µÄµµ°¸ÄÚÈݼÓÉÏÐкźóÊäÈë textfile2 Õâ¸öµµ°¸Àï
cat -b textfile1 textfile2 >> textfile3 °Ñ textfile1 ºÍ textfile2 µÄµµ°¸ÄÚÈݼÓÉÏÐкţ¨¿Õ°×Ðв»¼Ó£©Ö®ºó½«ÄÚÈݸ½¼Óµ½ textfile3
Ãû³Æ:cd
ʹÓÃȨÏÞ:ËùÓÐʹÓÃÕß
ʹÓ÷½Ê½:cd [dirName]
˵Ã÷:±ä»»¹¤×÷Ŀ¼ÖÁ dirName¡£ ÆäÖÐ dirName ±íʾ·¨¿ÉΪ¾ø¶Ô·¾¶»òÏà¶Ô·¾¶¡£ÈôĿ¼Ãû³ÆÊ¡ÂÔ,Ôò±ä»»ÖÁʹÓÃÕßµÄ home directory (Ò²¾ÍÊÇ¸Õ login ʱËùÔÚµÄĿ¼).ÁíÍâ,"~" Ò²±íʾΪ home directory µÄÒâ˼,"." ÔòÊDZíʾĿǰËùÔÚµÄĿ¼,".." Ôò±íʾĿǰĿ¼λÖõÄÉÏÒ»² ......
ÈçºÎÔÚLinuxϰ²×°mysqlµÄ¶þ½øÖÆÔ´´úÂë°ü--¸ß¼¶Óû§
¼¸ÌìÑо¿Á˺þã¬ÖÕÓÚ±»ÎÒÖªµÀÁËÈçºÎÔÚLinuxϰ²×°mysqlµÄ¶þ½øÖÆÔ´´úÂë°ü£¬×îÖÕ½â¾öÁËERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)µÄȨÏÞÎÊÌâ£¬ÕæµÄÊǸп®Íò·Ö°¡£¬Ö»Ïë°ÑËûд³öÀ´£¬ÈÃ×Ô¼ºÒÔºó²»ÒªÍü¼ÇÁË£¬ºÃÁË£¬·Ï»°²»¶à˵ÁË£¬¿´¿´Îҵݲװ²½Öè°É£¡
1.ÏÂÔØmysql-5.0.51a-linux-i686-glibc23.tar.gz£¬ÏÂÔØµØÖ·Îªhttp://download.unix-center.net/ ... i686-glibc23.tar.gz
2.°ÑÏÂÔØµÄÎļþ·ÅÔÚÄãµÄÖ÷Ŀ¼£¬ÔÚÖÕ¶ËÊäÈëls,ÈçÏÂ:
[root@localhost mysql]# ls
Desktop Documents Download Music mysql-5.0.51a-linux-i686-glibc23.tar.gz Pictures Public Templates Videos
3.È»ºóÓÃtar -zxvf mysql-5.0.51a-linux-i686-glibc23.tar.gzÃüÁî½âѹµ½µ±Ç°Ä¿Â¼£¬ÈçÏ£º
[root@localhost mysql]# tar -zxvf mysql-5.0.51a-linux-i686-glibc23.tar.gz
[root@localhost mysql]# ls
Desktop Download mysql-5.0.51a-linux-i686-glibc23 ......
ÈçºÎÔÚLinuxϰ²×°mysqlµÄ¶þ½øÖÆÔ´´úÂë°ü--¸ß¼¶Óû§
¼¸ÌìÑо¿Á˺þã¬ÖÕÓÚ±»ÎÒÖªµÀÁËÈçºÎÔÚLinuxϰ²×°mysqlµÄ¶þ½øÖÆÔ´´úÂë°ü£¬×îÖÕ½â¾öÁËERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)µÄȨÏÞÎÊÌâ£¬ÕæµÄÊǸп®Íò·Ö°¡£¬Ö»Ïë°ÑËûд³öÀ´£¬ÈÃ×Ô¼ºÒÔºó²»ÒªÍü¼ÇÁË£¬ºÃÁË£¬·Ï»°²»¶à˵ÁË£¬¿´¿´Îҵݲװ²½Öè°É£¡
1.ÏÂÔØmysql-5.0.51a-linux-i686-glibc23.tar.gz£¬ÏÂÔØµØÖ·Îªhttp://download.unix-center.net/ ... i686-glibc23.tar.gz
2.°ÑÏÂÔØµÄÎļþ·ÅÔÚÄãµÄÖ÷Ŀ¼£¬ÔÚÖÕ¶ËÊäÈëls,ÈçÏÂ:
[root@localhost mysql]# ls
Desktop Documents Download Music mysql-5.0.51a-linux-i686-glibc23.tar.gz Pictures Public Templates Videos
3.È»ºóÓÃtar -zxvf mysql-5.0.51a-linux-i686-glibc23.tar.gzÃüÁî½âѹµ½µ±Ç°Ä¿Â¼£¬ÈçÏ£º
[root@localhost mysql]# tar -zxvf mysql-5.0.51a-linux-i686-glibc23.tar.gz
[root@localhost mysql]# ls
Desktop Download mysql-5.0.51a-linux-i686-glibc23 ......
Linux ÖÐ RPM ÃüÁî²ÎÊýʹÓÃÏê½â
¡¡¡¡ÔÚLinux²Ù×÷ϵͳÖУ¬ÓÐÒ»¸öϵͳÈí¼þ°ü£¬ËüµÄ¹¦ÄÜÀàËÆÓÚWindowsÀïÃæµÄ“Ìí¼Ó/ɾ³ý³ÌÐò”£¬µ«Êǹ¦ÄÜÓֱȓÌí¼Ó/ɾ³ý³ÌÐò”Ç¿ºÜ¶à£¬Ëü¾ÍÊÇ Red Hat Package Manager(¼ò³ÆRPM)¡£´Ë¹¤¾ß°ü×îÏÈÊÇÓÉRed Hat¹«Ë¾ÍƳöµÄ£¬ºóÀ´±»ÆäËûLinux¿ª·¢ÉÌËù½èÓá£ÓÉÓÚËüΪLinuxʹÓÃÕßʡȥÁ˺ܶàʱ¼ä£¬ËùÒÔ±»¹ã·ºÓ¦ÓÃÓÚÔÚLinuxϰ²×°¡¢É¾³ýÈí¼þ¡£ÏÂÃæ¾Í¸ø´ó¼Ò½éÉÜÒ»ÏÂËüµÄ¾ßÌåʹÓ÷½·¨¡£
¡¡¡¡1.ÎÒÃǵõ½Ò»¸öÐÂÈí¼þ£¬ÔÚ°²×°Ö®Ç°£¬Ò»°ã¶¼ÒªÏȲ鿴һÏÂÕâ¸öÈí¼þ°üÀïÓÐʲôÄÚÈÝ£¬¼ÙÉèÕâ¸öÎļþÊÇ£ºLinux-1.4-6.i368.rpm£¬ÎÒÃÇ¿ÉÒÔÓÃÕâÌõÃüÁî²é¿´£º
¡¡¡¡rpm -qpi Linux-1.4-6.i368.rpm
¡¡¡¡ÏµÍ³½«»áÁгöÕâ¸öÈí¼þ°üµÄÏêϸ×ÊÁÏ£¬°üÀ¨º¬ÓжàÉÙ¸öÎļþ¡¢¸÷ÎļþÃû³Æ¡¢Îļþ´óС¡¢´´½¨Ê±¼ä¡¢±àÒëÈÕÆÚµÈÐÅÏ¢¡£
¡¡¡¡2.ÉÏÃæÁгöµÄËùÓÐÎļþÔÚ°²×°Ê±²»Ò»¶¨È«²¿°²×°£¬¾ÍÏñWindowsϳÌÐòµÄ°²×°·½Ê½·ÖΪµäÐÍ¡¢ÍêÈ«¡¢×Ô¶¨ÒåÒ»Ñù£¬LinuxÒ²»áÈÃÄãÑ¡Ôñ°²×°·½Ê½£¬´ËʱÎÒÃÇ¿ÉÒÔÓÃÏÂÃæÕâÌõÃüÁî²é¿´Èí¼þ°ü½«»áÔÚϵͳÀï°²×°ÄÄЩ²¿·Ö£¬ÒÔ·½±ãÎÒÃǵÄÑ¡Ôñ£º
¡¡¡¡rpm -qpl Linux-1.4-6.i368.rpm
¡¡¡¡3.Ñ¡Ôñ°²×°·½Ê½ºó£¬¿ªÊ¼°²×°¡£ÎÒÃÇ¿ÉÒÔÓÃrpm-ivh Linux-1.4-6.i368.r ......
ÎÒÃÇÒ»°ãÔÚLinux Éϰ²×°ÉèÖÃOracle Êý¾Ý¿â»òÕßÔÚ¸ü»»»òÉý¼¶Ó²¼þµÄʱºò¶¼ÐèÒªÅäÖÃLinux ϵͳµÄºËÐIJÎÊý, È»ºó²ÅÊǵ÷ÕûOracle ϵͳ²ÎÊý ¡£
kernel.shmallΪÎïÀíÄÚ´æ³ýÒÔpagesize;
kernel.shmmaxΪÎïÀíÄÚ´æµÄÒ»°ë;
fs.file-maxΪ512 ³ËÒÔ processes (Èç128¸öprocessÔòΪ 65536);
net.ipv4.ip_local_port_range/net.core.rmem_default/net.core.rmem_maxÈý¸ö²ÎÊýÉèÖú͹ٷ½Îĵµ²»Ò»Ñù, ÕâÊǸù¾Ýmetalink 343431.1 ×îÐÂÒªÇó¸ü¸ÄµÄ;
net.ipv4.tcp_rmem/net.ipv4.tcp_wmemÁ½¸ö²ÎÊýÒ»°ãÇé¿öÏÂÎÞÐèÉèÖÃ, ³ý·ÇÊÇÔÚDataguard/StreamsµÈÐèºÜ¶àÍøÂç´«ÊäÇé¿öÏÂ;
ÆäËü²ÎÊý¸ù¾Ý¹Ù·½ÎĵµÒªÇóÉèÖü´¿É.
²é¿´osϵͳҳµÄ´óС
#getconf PAGESIZE
4096
1. Linux ϵͳϵĺËÐIJÎÊý£º
# vi /etc/sysctl.conf
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
ÐÞ¸ÄÒÔºóÈòÎÊýÉúЧ:
# /sbin/sysctl -p
2. Linux ϺËÐIJÎÊýµ÷ ......
ÎÒÃÇÒ»°ãÔÚLinux Éϰ²×°ÉèÖÃOracle Êý¾Ý¿â»òÕßÔÚ¸ü»»»òÉý¼¶Ó²¼þµÄʱºò¶¼ÐèÒªÅäÖÃLinux ϵͳµÄºËÐIJÎÊý, È»ºó²ÅÊǵ÷ÕûOracle ϵͳ²ÎÊý ¡£
kernel.shmallΪÎïÀíÄÚ´æ³ýÒÔpagesize;
kernel.shmmaxΪÎïÀíÄÚ´æµÄÒ»°ë;
fs.file-maxΪ512 ³ËÒÔ processes (Èç128¸öprocessÔòΪ 65536);
net.ipv4.ip_local_port_range/net.core.rmem_default/net.core.rmem_maxÈý¸ö²ÎÊýÉèÖú͹ٷ½Îĵµ²»Ò»Ñù, ÕâÊǸù¾Ýmetalink 343431.1 ×îÐÂÒªÇó¸ü¸ÄµÄ;
net.ipv4.tcp_rmem/net.ipv4.tcp_wmemÁ½¸ö²ÎÊýÒ»°ãÇé¿öÏÂÎÞÐèÉèÖÃ, ³ý·ÇÊÇÔÚDataguard/StreamsµÈÐèºÜ¶àÍøÂç´«ÊäÇé¿öÏÂ;
ÆäËü²ÎÊý¸ù¾Ý¹Ù·½ÎĵµÒªÇóÉèÖü´¿É.
²é¿´osϵͳҳµÄ´óС
#getconf PAGESIZE
4096
1. Linux ϵͳϵĺËÐIJÎÊý£º
# vi /etc/sysctl.conf
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 9000 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
ÐÞ¸ÄÒÔºóÈòÎÊýÉúЧ:
# /sbin/sysctl -p
2. Linux ϺËÐIJÎÊýµ÷ ......
LinuxÏµÍ³ÍøÂç·þÎñÆ÷Ä£ÐÍÖ÷ÒªÓÐÁ½ÖÖ£º²¢·¢·þÎñÆ÷ºÍÑ»··þÎñÆ÷¡£Ëùν²¢·¢·þÎñÆ÷¾ÍÊÇÔÚͬһ¸öʱ¿Ì¿ÉÒÔ´¦ÀíÀ´×Ô¶à¸ö¿Í»§¶ËµÄÇëÇó£»Ñ»··þÎñÆ÷ÊÇÖ¸·þÎñÆ÷ÔÚͬһʱ¿ÌÖ¸¿ÉÒÔÏìÓ¦Ò»¸ö¿Í»§¶ËµÄÇëÇó¡£¶øÇÒ¶ÔÓÚTCPºÍUDPÌ×½Ó×Ö£¬ÕâÁ½ÖÖ·þÎñÆ÷µÄʵÏÖ·½Ê½Ò²Óв»Í¬µÄÌØµã¡£
¡¡¡¡1¡¢TCPÑ»··þÎñÆ÷£ºÊ×ÏÈTCP·þÎñÆ÷½ÓÊÜÒ»¸ö¿Í»§¶ËµÄÁ¬½ÓÇëÇ󣬴¦ÀíÁ¬½ÓÇëÇó£¬ÔÚÍê³ÉÕâ¸ö¿Í»§¶ËµÄËùÓÐÇëÇóºó¶Ï¿ªÁ¬½Ó£¬È»ºóÔÙ½ÓÊÜÏÂÒ»¸ö¿Í»§¶ËµÄÇëÇó¡£
¡¡¡¡ ´´½¨TCPÑ»··þÎñÆ÷µÄËã·¨ÈçÏ£º
¡¡¡¡ socket(……)£» //´´½¨Ò»¸öTCPÌ×½Ó×Ö
¡¡¡¡ bind(……)£» //°î¶¨¹«ÈϵĶ˿ںÅ
¡¡¡¡ listen(……£©£» //ÇãÌý¿Í»§¶ËÁ¬½Ó
¡¡¡¡ while(1£© //¿ªÊ¼Ñ»·½ÓÊÕ¿Í»§¶ËÁ¬½Ó
¡¡¡¡ {
¡¡¡¡ accept(……)£»//½ÓÊÕµ±Ç°¿Í»§¶ËµÄÁ¬½Ó
¡¡¡¡ while(1)
¡¡¡¡ { //´¦Àíµ±Ç°¿Í»§¶ËµÄÇëÇó
¡¡¡¡ read(……£©£»
¡¡¡¡ process(……);
¡¡¡¡ write(……);
¡¡¡¡ }
¡¡¡¡ close(……); //¹Ø±Õµ±Ç°¿Í»§¶ËµÄÁ¬½Ó£¬×¼±¸½ÓÊÕÏÂÒ»¸ö¿Í»§¶ËÁ¬½Ó
¡¡¡¡ }
¡¡¡¡TCPÑ»··þÎñÆ÷Ò»´ÎÖ»´¦ÀíÒ»¸ö¿Í»§¶ËµÄÇëÇó£¬Èç¹ûÓÐÒ»¸ö¿Í»§¶ËÕ¼Ó÷þÎñÆ÷²»·ÅÊ ......