LinuxÄÚ´æ¿Õ¼ä·ÃÎÊÔý¼Ç(ת)
http://blog.chinaunix.net/u/25764/showart_1882931.html
Òý£º±¾À´´òË㽫Õⲿ·ÖÄÚÈݲ¢Èëµ½¡¶The Linux Kernel Module Programming Guide±Ê¼Ç¡·ÖÐÈ¥£¬µ«ÊÇÏëÏÂÄÚ´æ¿Õ¼ä¹ÜÀí·ÃÎÊÏ൱»ù´¡ÖØÒª¶øÇÒÄÚÈÝÁ¿½Ï´ó£¬ËùÒԾ͵¥¶À¼Ç¼¡£ÔÚ¹ýÈ¥Ò»ÄêÀÓÉÓڳɹ¦¿ª·¢¹ý¼¸¸öÆÄΪ¸´ÔÓµÄÉ豸Çý¶¯£¬¾Í×ÔÒÔÎªÕÆÎÕÁËÇý¶¯¿ª·¢µÄ·½·¨ºÍ¼¼ÇÉ£¬ÊÂʵÉÏÔÚ»ù´¡ÉÏ£¬ÎÒÈ´ÓÐ×ÅÖÂÃüµÄäµã¡£Õâ¸öäµã¾ÍÊÇLinuxµÄÄÚ´æ¹ÜÀí£¬ÆäʵºÜ¾Ã֮ǰ£¬¾ÍÒ»Ö±¾Í¸ã²»¶®MMU¡¢Page¡¢Section¡¢Ò³±íµÈ¸ÅÄÄÇʱÒÔΪÕâЩ²¢²»ÖØÒª¡£ÏÖÔÚ¿´À´ÖÕÓÚ³¢µ½¿à¹ûÁË£¬ÔÚ¿ª·¢Virtual FramebufferµÄʱºò£¬¾ÍÔÚmmapÕâ¸ö½Ó¿ÚʵÏÖÉÏ¿¨×¡ÁË¡£Ë×»°Ëù˵µÄÊéµ½ÓÃʱ·½ºÜÉÙ£¬ÊÇÖÁÀíÃûÑÔ°¡¡£
×¢£ºÔÚx86¼Ü¹¹ÉÏ£¬»á·ÖΪÄÚ´æ¿Õ¼äºÍI/O¿Õ¼ä£¬µ«ÊÇÔÚ´ó¶àÊýǶÈëʽ¿ØÖÆÆ÷ÈçARM¡¢PowerPC²¢²»ÌṩI/O¿Õ¼ä¡£ÎÒÃæÏòµÄÖ÷ÒªÊÇǶÈëʽ·½ÃæµÄÇý¶¯¿ª·¢£¬ËùÒÔÕâÀï²¢²»ÌÖÂÛI/O¿Õ¼äµÄÄÚÈÝ¡£±¾ÎĵÄÄÚÈÝ´ó¶àÊýÊÇժ¼¡¶LinuxÉ豸Çý¶¯¿ª·¢Ïê½â¡·µÄµÚʮһÕ£¬²¢½áºÏÎÒÔÚ¿ª·¢¹ý³ÌµÄһЩÐĵÃÌå»á¡£
Ò»¡¢ÄÚ´æ¹ÜÀíµ¥ÔªMMU
MMU¸¨Öú²Ù×÷ϵͳ½øÐÐÄÚ´æ¹ÜÀí¡¢ÌṩÐéÄâµØÖ·ºÍÎïÀíµØÖ·µÄÓ³Éä¡¢ÄÚ´æ·ÃÎÊȨÏÞ±£»¤ºÍCache»º´æ¿ØÖƵÈÓ²¼þÖ§³Ö£¬¿É¼û£¬Õ⽫ʹµÃLinux²Ù×÷ϵͳÄܵ¥¶ÀΪϵͳµÄÿ¸öÓû§·ÖÅä¶ÀÁ¢µÄÄÚ´æ¿Õ¼ä²¢±£Ö¤Óû§¿Õ¼ä²»ÄÜ·ÃÎÊÄں˿ռäµÄµØÖ·£¬Îª²Ù×÷ϵͳµÄÐéÄâÄÚ´æ¹ÜÀíÄ£¿éÌṩÁËÓ²¼þ»ù´¡¡£
ÔÚs3c2410µÄviviÕâ¸öbootloaderÖУ¬½¨Á¢ÁËÒ»¸ö4GBÎïÀíµØÖ·ÓëÐéÄâµØÖ·Ò»Ò»Ó³ÉäµÄÒ»¼¶Ò³±í£¬ÎÒÃÇ¿ÉÒÔͨ¹ýº¯Êýmem_mapping_linear()À´Ì½Ñ°Ò»ÏÂÆä´´½¨¹ý³Ì
static inline void mem_mapping_linear(void)
{
unsigned long pageoffset, sectionNumber;
/*4GBÐéÄâµØÖ·Ó³Éäµ½ÏàÓ¦µÄÎïÀíµØÖ·ÉÏ£¬¾ù²»ÄÜ»º´æ*/
for (sectionNumber = 0; sectionNumber < 4096; sectionNumber++)
{
pageoffset = (sectionNumber << 20);
*(mmu_tlb_base + (pageoffset >> 20)) = pageoffset | MMU_SECDESC;
//mmu_tlb_baseΪ´æ·ÅÒ³±íµÄÊ×µØÖ·,tlbÊÇת»»ÅÔ·»º´æ£¬ÊÇת»»±íµÄCache
}
/*ʹÄÜDRAMµÄÇøÓò¿É»º´æ*/
 
Ïà¹ØÎĵµ£º
Æô¶¯mysql: /etc/rc.d/init.d/mysql start
ÐÞ¸ÄÃÜÂë: ¸ñʽ£ºmysqladmin -uÓû§Ãû -p¾ÉÃÜÂë password ÐÂÃÜÂë
ʹÓÃÃÜÂëµÇ¼: mysql -u root -p
ÏÔʾÊý¾Ý¿â: show databases;
Ñ¡ÔñÊý¾Ý¿â: use Êý¾Ý¿âÃû;
ÏÔʾ±í: show tables;
ÏÔʾ±í½á¹¹: descibe ±íÃû;
Ô¶³ÌµÇ¼mysqlÐèÒª¿ªÆôÈ ......
Ðò ÑÔ
ÓÉÓÚ¿ª·¢»·¾³ÐèÒªÔÚlinux-2.6ÄÚºËÉϽøÐУ¬ÓÚÊÇ×¼±¸¶ÔÎÒµÄÐéÄâ»úÉϵÄLinuxϵͳÉý¼¶¡£Ã»Ïëµ½ÕâһŪ¾Í»¨ÁËÁ½Ììʱ¼ä(·´¸´×°ÏµÍ³£¬ÐÁ¿à°¡~~)£¬×ÜËã°ÑLinuxϵͳ´Ó2.4.20-8Äں˳ɹ¦Éý¼¶µ½ÁË2.6.18Äںˡ£
ÍøÉÏËäÈ»Óкܶà½éÉÜLinuxÄÚºËÉý¼¶µÄÎÄÕ£¬²»¹ýҪô¹ýʱ£¬ÏÂÔØÁ´½ÓʧЧ£»ÒªÃ´±í´ï²»Ç壬²»ÖªËùÔÆ£»¸ü¿ÉÆøµÄ ......
¹ÜµÀÊÇLinuxÖкÜÖØÒªµÄÒ»ÖÖͨÐÅ·½Ê½,ÊǰÑÒ»¸ö³ÌÐòµÄÊä³öÖ±½ÓÁ¬½Óµ½ÁíÒ»¸ö³ÌÐòµÄÊäÈë,³£ËµµÄ¹ÜµÀ¶àÊÇÖ¸ÎÞÃû¹ÜµÀ,ÎÞÃû¹ÜµÀÖ»ÄÜÓÃÓÚ¾ßÓÐÇ×Ôµ¹ØÏµµÄ½ø³ÌÖ®¼ä£¬ÕâÊÇËüÓëÓÐÃû¹ÜµÀµÄ×î´óÇø±ð¡£
ÓÐÃû¹ÜµÀ½Ðnamed pipe»òÕßFIFO(ÏȽøÏȳö)£¬¿ÉÒÔÓú¯Êýmkfifo()´´½¨¡£
Linux¹ÜµÀµÄʵÏÖ»úÖÆ
ÔÚLinuxÖУ¬¹ÜµÀÊÇÒ»ÖÖ ......
¼Ù¶¨Äã»áCÓïÑÔ£¬¶øÇÒÃ÷°×CÓïÑÔÃæÏò¶ÔÏó±à³ÌµÄschme£¬¶Ô²Ù×÷ϵͳ£¨°üÀ¨µ÷¶È£¬ÄÚ´æ·ÖÅ䣬·ÖÒ³£¬Í¬²½£¬etc£©±È½ÏÁ˽⡣ÄÇôÄã¿ÉÒÔ°´ÕÕÈçÏÂ˳ÐòѧϰLinux Äںˡ£
1.¿´Linux Device DriverÕâ±¾Êé¡£ÕâÊÇΪÁËÈÃÄã¶®µÃ±àÒëÄÚºËÄ£¿éµÄ·½·¨¡£»¹ÓÐΪLinux¸÷ÖÖÉ豸ÁôÏÂһЩӡÏó¡£Í¬Ê±Ò»±é¿´ÊéÒ»±ß¿´Ä³Ð©É豸µÄÔ´´ú ......