²é¿´Äں˰汾ºÅµÄ·½·¨ÊÇ£º
´ò¿ªÒ»¸öÖÕ¶Ë£¬ÊäÈëÃüÁîuname -r
±ÈÈçUbuntu9.10µÄÄÚºËÊÇlinux 2.6.31
CentOS 5.4µÄÄÚºËÊÇlinux2.6.18
²é¿´·¢Ðа汾ºÅµÄ·½·¨ÊÇ£º
ÓÃÃüÁîÕÒµ½/etcĿ¼ÏµÄissueÎļþ»òreleaseÎļþ¡£ ls /etc/*issue* »ò ls /etc/*release*
È»ºóÖ±½ÓÓÃcatÃüÁî²é¿´ÎļþÄÚÈݾÍÖªµÀ°æ±¾ºÅÁË£º
±ÈÈçÔÚubuntu linux 7.10 ÉÏcat /etc/lsb-releaseµÃµ½µÄ½á¹ûΪ£º
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=7.10
DISTRIB_CODENAME=gutsy
DISTRIB_DESCRIPTION="Ubuntu 7.10"
˵Ã÷°æ±¾ºÅΪ7.10£¬°æ±¾±ðÃûÊÇgutsy
ubuntu linux 7.04ÉÏ¿´µ½µÄÊÇ£º
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=7.04
DISTRIB_CODENAME=feisty
DISTRIB_DESCRIPTION="Ubuntu 7.04" ......
Ŀ¼
1¡¢¹ØÓÚÎı¾±à¼Æ÷£»
2¡¢vi ±à¼Æ÷£»
3¡¢vi ±à¼Æ÷µÄʹÓ÷½·¨£»
3.1 ÈçºÎµ÷ÓÃvi £»
3.2 vi µÄÈýÖÖÃüÁîģʽ£»
3.3 ÎļþµÄ±£´æºÍÍ˳ö£»
3.4 ¹â±êÒÆ¶¯£»
3.5
²åÈëģʽ£¨Îı¾µÄ²åÈ룩£»
3.6 Îı¾ÄÚÈݵÄɾ³ý²Ù×÷£»
3.7 »Ö¸´Ð޸ļ°»Ö¸´É¾³ý²Ù×÷£»
3.8 ¿ÉÊÓģʽ£»
3.9
¸´ÖƺÍÕ³ÌûµÄ²Ù×÷£»
3.10 ¹ØÓÚÐкţ»
3.11 ²éÕÒºÍÌæ»»¹¦ÄÜ£»
3.11.1 ²éÕÒ£»
3.11.2 Ìæ»»£»
4¡¢²Î¿¼Îĵµ£»
==========================================================
ÕýÎÄ
==========================================================
1¡¢¹ØÓÚÎı¾±à¼Æ÷£»
¡¡¡¡Îı¾±à¼Æ÷Óкܶ࣬±ÈÈçͼÐÎģʽµÄgedit¡¢kwrite¡¢OpenOffice ... ...
£¬Îı¾Ä£Ê½ÏÂµÄ±à¼Æ÷ÓÐvi¡¢vim£¨viµÄÔöÇ¿°æ±¾£©ºÍnano ... ...
viºÍvimÊÇÎÒÃÇÔÚLinuxÖÐ×î³£ÓÃµÄ±à¼Æ÷¡£ÎÒÃÇÓбØÒª½éÉÜÒ»ÏÂvi£¨vim£©×î¼òµ¥µÄÓ÷¨£¬ÒÔÈÃLinuxÈëÃż¶Óû§ÔÚ×î¶ÌµÄʱ¼äÄÚѧ»áʹÓÃËü¡£
¡¡¡¡nano ¹¤¾ßºÍDOS²Ù×÷ϵͳϵÄedit²Ù×÷ÏàËÆ£¬Ê¹Óüòµ¥£¬ÎÒÃDz»×÷½éÉÜÁË£¬Èç¹ûÄúÓÐÐËȤ£¬²»·Á³¢ÊÔһϣ»
2¡¢vi ±à¼Æ÷£»
¡¡¡¡ÎªÊ²Ã´ÒªÑ§»á¼òµ¥Ó¦ÓÃvi
¡¡¡¡vi»òvimÊÇLinux×î»ù±¾µÄÎı¾±à¼¹¤¾ß£¬vi»òvimËäȻûÓÐͼÐνçÃæ±à¼Æ÷ÄÇÑùµãÊó±êµ ......
1. ÔÚhostÉÏÖ´ÐУº
È¥µô /etc/ntp.conf ÖÐserverÐÐǰµÄ×¢ÊÍ£¬Server×îºóµÄprefer£¬±íʾNTP·þÎñÆ÷Ö÷ÒªÒԸò¿Ö÷»úʱ¼ä½øÐÐУ׼£¬¿ÉÈ¥µôprefer¸Ä²ÎÊýΪtime.nist.gov¡£
ntpdate time.nist.gov
ntpd
2. ÔÚclientÉÏÖ´ÐÐ
ntpdate host
3. ͬ²½µ½bios
hwclock -w
4.ÿÌìÖ´ÐÐͬ²½£¬ÔÚ/etc/crontabÖмÓÒ»¾ä
30 3 * * * root /usr/sbin/ntpdate node64 && /sbin/hwclock -w >> /dev/null 2>&1
5.ÉèÖÃcronºÍntpd·þÎñ¿ª»úÆô¶¯Îª
chkconfig -level 235 cron on
chkconfig -level 35 ntpd on
6.crontabÎļþ˵Ã÷
1·ÖÖÓ£¨0-59£©
2Сʱ£¨2-24£©
3ÈÕÆÚ£¨1-31£©
4Ô·ݣ¨1-12£»»òÓ¢ÎÄËõдJan¡¢FebµÈ£©
5Öܼ¸£¨0-6£¬0ΪÖÜÈÕ£»»òµ¥´ÊËõдSun¡¢MonµÈ£©
6Óû§Ãû£¨Ö´ÐÐÃüÁîʱÒÔ´ËÓû§µÄÉí·Ý£©
7ÒªÖ´ÐеÄÃüÁ·¾¶£© ......
×î½üÔÚkernel ÀïÃæ coding, ÕÒÀ´Ò»Ð©×ÊÁÏ Ë³ÊÖÌùÀ´£¬·½±ã²éÕÒ¡££¨¸ÐлÔ×÷ÕßµÄŬÁ¦£¬ÈôÓаæÈ¨ÎÊÌ⣬ÇëÁªÏµ£©
ÓÐʱºòÐèÒªÔÚLinux kernel££´ó¶àÊÇÔÚÐèÒªµ÷ÊÔµÄÇý¶¯³ÌÐò££ÖжÁдÎļþÊý¾Ý¡£ÔÚkernelÖвÙ×÷ÎļþûÓбê×¼¿â¿ÉÓã¬ÐèÒªÀûÓÃkernelµÄһЩº¯Êý£¬ÕâЩº¯ÊýÖ÷ÒªÓУº filp_open() filp_close(), vfs_read() vfs_write()£¬set_fs()£¬get_fs()µÈ£¬ÕâЩº¯ÊýÔÚlinux/fs.hºÍasm/uaccess.hÍ·ÎļþÖÐÉùÃ÷¡£ÏÂÃæ½éÉÜÖ÷Òª²½Ö裺
1. ´ò¿ªÎļþ
filp_open()ÔÚkernelÖпÉÒÔ´ò¿ªÎļþ£¬ÆäÔÐÎÈçÏ£º
strcut file* filp_open(const char* filename, int open_mode, int mode);
¸Ãº¯Êý·µ»Østrcut file*½á¹¹Ö¸Õ룬¹©ºó¼Ìº¯Êý²Ù×÷ʹÓ㬸÷µ»ØÖµÓÃIS£ßERR£¨£©À´¼ìÑéÆäÓÐЧÐÔ¡£
²ÎÊý˵Ã÷
filename£º ±íÃ÷Òª´ò¿ª»ò´´½¨ÎļþµÄÃû³Æ£¨°üÀ¨Â·¾¶²¿·Ö£©¡£ÔÚÄÚºËÖдò¿ªµÄÎļþʱÐèҪעÒâ´ò¿ªµÄʱ»ú£¬ºÜÈÝÒ׳öÏÖÐèÒª´ò¿ªÎļþµÄÇý¶¯ºÜÔç¾Í¼ÓÔØ²¢´ò¿ªÎļþ£¬µ«ÐèÒª´ò¿ªµÄÎļþËùÔÚÉ豸»¹²»ÓйÒÔØµ½ÎļþϵͳÖУ¬¶øµ¼Ö´ò¿ªÊ§°Ü¡£
open_mode£º ÎļþµÄ´ò¿ª·½Ê½£¬ÆäȡֵÓë±ê×¼¿âÖеÄopenÏàÓ¦²ÎÊýÀàËÆ£¬¿ÉÒÔÈ¡O_CREAT,O_RDWR,O_RDONLYµÈ¡£
mode£º ´´½¨ÎļþʱʹÓã ......
ÈÕÆÚ£º2010-02-04
×÷ÕߣºSteven Yang
ÓÊÏ䣺mqyoung@gmail.com
×¢£º×ªÔØÇë×¢Ã÷³ö´¦ºÍ×÷Õß²¢±£³ÖÎĵµµÄÍêÕû
HZ
ÄÚºËͨ¹ý¶¨Ê±Æ÷ÖжÏÀ´¸ú×Ùʱ¼äÁ÷£¬Ê±ÖÓÖжÏÓÉϵͳ¶¨Ê±Ó²¼þÒÔÖÜÆÚÐԵļä¸ô²úÉú£¬Õâ¸ö¼ä¸ôÓÉÄں˸ù¾ÝHZµÄÖµÉ趨¡£
HZÓëÌåϵ½á¹¹Óйأ¬¶¨ÒåÔÚ<linux/param.h>ÖлòÕ߸ÃÎļþ°üº¬µÄij¸ö×ÓÆ½Ì¨Ïà¹ØµÄÎļþÖС£Ä¬ÈÏֵΪ50 ~ 1200, X86µÄĬÈÏֵΪ1000¡£Èç¹ûÏë¸Ä±äϵͳʱÖÓÖÐ¶ÏµÄÆµÂÊ£¬¿ÉÒÔÐÞ¸ÄHZÖµ¡£
jiffies
ÿ´ÎʱÖÓÖжϲúÉú£¬ÄÚºËÄÚ²¿¼ÆÊýÆ÷µÄÖµ¼ÓÒ»¡£jiffies£¬ÊÇÒ»¸ö64µÄ±äÁ¿¡£
µ÷ÓÃÐè°üº¬<linux/jiffies.h> »ò <linux/sched.h>
±È½ÏÁ½¸öjiffies¿ìÕյĺ¯Êý
int time_after()
int time_before()
int time_after_eq()
int time_before_eq()
diff = (long)t2 - (long)t1
msec = diff * 1000 / HZ (ת»»ÎªºÁÃë)
ʱ¼ä±íÊöÐÎʽ
struct timeval; stuct timespec;
#include <linux/time.h>
unsigned long timespec_to_jiffies()
void jiffies_to_timespec()
unsigned long timeval_to_jiffies()
void jiffies_to_timeval()
¶Ô64λjiffies_64µÄ·ÃÎÊ
32λCPUÉ϶Ô64λֵµÄ·ÃÎʲ»ÊÇÔ×ӵģ¬ÐèҪͨ¹ýÕâ¸öº¯ÊýÀ´¶ÁÈ¡
#include ......
×÷Õߣº·¶Ò»º½,»ªÇåÔ¶¼ûÉîÛڸ߼¶½²Ê¦
FLASHÇý¶¯ÔÚǶÈëʽϵͳÖÐÓÐמÙ×ãÇáÖØµÄλÖ㬶øÄ¿Ç°Êг¡ÉÏNAND FLASHµÄ¼Û¸ñÓÖÒª±ãÒËÓëNOR FLASH,Ëæ×ÅÔ½À´Ô½¶àµÄƽ̨֧³Ö´ÓNAND FLASHÖÐÆô¶¯£¬ÕÆÎÕNAND flashµÄÇý¶¯±àдÓÐ×ÅÖØÒªµÄÏÖʵÒâÒ壬ÓÉÓÚÄÚºËÒѾÍê³ÉÁ˴󲿷ֵŤ×÷£¬Êµ¼Ê¹¤×÷Öд󲿷ֹ¤³Ìʦ¶ÔNAND FLASHÇý¶¯Ö»ÊǼòµ¥µÄÐ޸ģ¬¶ÔÆä¹¤×÷ÔÀí²¢²»Ì«Çå³þ£¬ÏÂÃæÎÒÃÇÀ´·ÖÎöÒ»ÏÂNAND FLASHµÄ´úÂëÁ÷³Ì£¬´ÓÖÐÌå»á¿éÉ豸µÄ´úÂëÖ®ÃÀ¡£
ÔÚѧϰNAND FLASHÇý¶¯Ö®Ç°£¬ÎÒÃÇÐèÒª¶Ô¿éÉ豸ÖÐÏÂÃæµÄÖØÒª2µãÓиöÈÏʶ£º
1.gendisk: ÃèÊö¿éÉ豸ʵÌå(Ò»Õû¸önandflashоƬ)µÄ½á¹¹Ìå
Õû¸ö¿éÉ豸µÄ×¢²á¹ý³Ì¶¼ÊÇÎ§ÈÆgendiskÀ´¿ªÕ¹µÄ
2. add_disk() // ½«Ò»¸ö·ÖÇøÐÅÏ¢(Èç/dev/mtdblock3)×¢²áµ½ÄÚºËÁбíÖÐ
ÏÂÃæÎÒÃÇÀ´·ÖÎö¾ßÌåµÄÇý¶¯£º
Ò»¡¢s3c2410nandflash¿ØÖÆÆ÷³õʼ»¯²½Öè:
s3c2410_nand_init(&s3c2410_nand_driver)
-> driver_register->bus_add_driver()->driver_attach->bus_for_each_dev(__driver_attach)->driver_probe ......
×÷Õߣº·¶Ò»º½,»ªÇåÔ¶¼ûÉîÛڸ߼¶½²Ê¦
FLASHÇý¶¯ÔÚǶÈëʽϵͳÖÐÓÐמÙ×ãÇáÖØµÄλÖ㬶øÄ¿Ç°Êг¡ÉÏNAND FLASHµÄ¼Û¸ñÓÖÒª±ãÒËÓëNOR FLASH,Ëæ×ÅÔ½À´Ô½¶àµÄƽ̨֧³Ö´ÓNAND FLASHÖÐÆô¶¯£¬ÕÆÎÕNAND flashµÄÇý¶¯±àдÓÐ×ÅÖØÒªµÄÏÖʵÒâÒ壬ÓÉÓÚÄÚºËÒѾÍê³ÉÁ˴󲿷ֵŤ×÷£¬Êµ¼Ê¹¤×÷Öд󲿷ֹ¤³Ìʦ¶ÔNAND FLASHÇý¶¯Ö»ÊǼòµ¥µÄÐ޸ģ¬¶ÔÆä¹¤×÷ÔÀí²¢²»Ì«Çå³þ£¬ÏÂÃæÎÒÃÇÀ´·ÖÎöÒ»ÏÂNAND FLASHµÄ´úÂëÁ÷³Ì£¬´ÓÖÐÌå»á¿éÉ豸µÄ´úÂëÖ®ÃÀ¡£
ÔÚѧϰNAND FLASHÇý¶¯Ö®Ç°£¬ÎÒÃÇÐèÒª¶Ô¿éÉ豸ÖÐÏÂÃæµÄÖØÒª2µãÓиöÈÏʶ£º
1.gendisk: ÃèÊö¿éÉ豸ʵÌå(Ò»Õû¸önandflashоƬ)µÄ½á¹¹Ìå
Õû¸ö¿éÉ豸µÄ×¢²á¹ý³Ì¶¼ÊÇÎ§ÈÆgendiskÀ´¿ªÕ¹µÄ
2. add_disk() // ½«Ò»¸ö·ÖÇøÐÅÏ¢(Èç/dev/mtdblock3)×¢²áµ½ÄÚºËÁбíÖÐ
ÏÂÃæÎÒÃÇÀ´·ÖÎö¾ßÌåµÄÇý¶¯£º
Ò»¡¢s3c2410nandflash¿ØÖÆÆ÷³õʼ»¯²½Öè:
s3c2410_nand_init(&s3c2410_nand_driver)
-> driver_register->bus_add_driver()->driver_attach->bus_for_each_dev(__driver_attach)->driver_probe ......