Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

¿éÉ豸Çý¶¯ÏòLINUXÒÆÖ²µÄ³£¹æ²½Öè¼°INITRDµÄʹÓÃ

 ÕâÀïÌáµ½µÄ¿éÉ豸·ºÖ¸¸÷ÖÖ¿ÉÒÔʵÏ̶ֹ¨´óСÊý¾ÝËæ»ú´«ÊäµÄÉ豸£¬ÈçFLASH¡¢SD Card¡¢RAMDISKµÈ£¬¿éÉ豸Çý¶¯ÒÆÖ²µÄ¹ý³Ìʵ¼ÊÉÏÊǽ«Ó²¼þ³§ÉÌÌṩµÄµ×²ãÇý¶¯´úÂëÓëLINUXϵͳ¼¯³ÉÆðÀ´µÄ¹ý³Ì¡£
ÔÚLINUXÖУ¬¿éÉ豸Äܹ»ÒÔÎļþϵͳµÄÐÎʽΪOSËù·ÃÎÊ£¬Æä´óÌå¼Ü¹¹ÈçÏ£º
LINUX Application
---------------------------------- system call
LINUX VFS
----------------------------------
File System (vfat/ext2/cramfs..)
----------------------------------
Block Device Driver
---------------------------------- <-- Our working scope
LLD from vendor
----------------------------------
Hardware
ÒÆÖ²µÄ³£¹æ¹ý³ÌΪ£º
1. ÀûÓÃmodule_initºê½«É豸µÄ³õʼ»¯º¯Êýmydev_init×¢²áµ½kernel¾µÏñµÄ.init¶Î¡£µ±È»£¬»¹ÒªÀûÓÃmodule_exitºê×¢²áÈ¥³õʼ»¯º¯Êýmydev_cleanup¡£(ref: linux/init.h)
2. Ìî³ä³õʼ»¯º¯Êýmydev_init£¬Íê³ÉÒÔÏÂÈýÏ×÷
2.1 ʹÓÃregister_blkdev×¢²á¿éÉ豸ºÅºÍÉ豸Ãû¡£¡¡(ref: drivers/block/genhd.c)
2.2 ÉèÖÃqueue£ºÖ÷ÒªÊÇ»ñÈ¡queue²¢ÉèÖÃrequestº¯Êý£¬ÉèÖÃsector´óСµÈ¡£¡¡(ref: drivers/block/ll_rw_blk.c)
2.3 Ìí¼Ódisk£ºadd_disk¡£ (ref: drivers/block/genhd.c)
Éæ¼°µ½µÄÊý¾Ý½á¹¹°üÀ¨£º
a) struct request_queue (ref: linux/blkdev.h)£¬ 2.2ÖеÄqueue½á¹¹
b) struct gendisk (ref: linux/genhd.h)£¬ 2.3ÖеÄdisk½á¹¹£¬¹Ø×¢³ÉÔ± ->
major/first_minor/minors <- É豸ºÅ;
fopsÖ¸Õë <- ¿éÉ豸²Ù×÷º¯ÊýÖ¸Õë×é
queueÖ¸Õë <- 2.2ÖеÄqueue
private_dataÖ¸Õë <- ´æ´¢Óë¾ßÌåÉ豸Ïà¹ØµÄÊý¾Ý½á¹¹
c) struct mydev_dev,¼´b)ÖеľßÌåÉ豸Ïà¹ØµÄÊý¾Ý½á¹¹£¬Í¨³£°üº¬³ÉÔ±
size <- É豸ÖÐsectorµÄÊýÄ¿
users <- ʹÓÃÉ豸µÄÓû§ÊýÄ¿
media_change <- media change񈬀
lock <- ×ÔÐýËø
queue Ö¸Õë <- É豸µÄstruct request_queueÖ¸Õë
disk Ö¸Õë <- É豸µÄstruct gendiskÖ¸Õë
3. LINUX¿éÉ豸Çý¶¯µÄ²Ù×÷º¯ÊýÖ¸Õë×é
open: É豸´ò¿ªÊ±±»µ÷Óã¬Ö÷Òª¹¦ÄÜΪ³õʼ»¯µ×²ãÉ豸£»»òÈ¡µ×²ãÉ豸ÐÅÏ¢
release: É豸¹Ø±Õʱ±»µ÷Óá£
ioctl: ʵÏÖioctlϵͳµ÷Óõĺ¯Êý£¬ÓÉÓÚ´óÁ¿µÄ±ê×¼ÇëÇóΪÉÏ²ã½ØÈ¡£¬Ò»°ã¿éÉ豸µÄioctl±È½Ï¶ÌС¡£
media_changed: Äں˵÷Óøú¯ÊýÒÔ¼ì²éÓû§ÊÇ·ñ¸ü»»ÁËÇý¶¯Æ÷ÄڵĽéÖÊ£¬Èç¹ûÓû§¸ü»»ÁË£¬ÄÇô·µ»ØÒ»¸ö·ÇÁãµÄÖµ¡£ÕâÊÇÕë¶Ô¿ÉÒÆ¶¯½éÖʵġ£
revalidate_dis


Ïà¹ØÎĵµ£º

LinuxÄÚºËÒÆÖ²ºÍ¸ùÎļþÏµÍ³ÖÆ×÷

 µÚÒ»ÕÂ ÒÆÖ²ÄÚºË
1.1 LinuxÄں˻ù´¡ÖªÊ¶
ÔÚ¶¯ÊÖ½øÐÐLinuxÄÚºËÒÆÖ²Ö®Ç°£¬·Ç³£ÓбØÒª¶ÔLinuxÄں˽øÐÐÒ»¶¨µÄÁ˽⣬ÏÂÃæ´ÓLinuxÄں˵İ汾ºÍ·ÖÀà˵Æð¡£
1.1.1  Linux°æ±¾
LinuxÄں˵İ汾ºÅ¿ÉÒÔ´ÓÔ´´úÂëµÄ¶¥²ãĿ¼ÏµÄMakefileÖп´µ½£¬±ÈÈç2.6.29.1Äں˵ÄMakefileÖУº
VERSION = 2
PATCHLEVEL = 6
......

Linuxϵͳ»·¾³ÏµÄSocket±à³ÌÏêϸ½âÎö

 
ʲôÊÇSocket
 
Socket½Ó¿ÚÊÇTCP/IPÍøÂçµÄAPI£¬Socket½Ó¿Ú¶¨ÒåÁËÐí¶àº¯Êý»òÀý³Ì£¬³ÌÐòÔ±¿ÉÒÔÓÃËüÃÇÀ´¿ª·¢TCP/IPÍøÂçÉϵÄÓ¦ÓóÌÐò¡£ÒªÑ§InternetÉϵÄTCP/IPÍøÂç±à³Ì£¬±ØÐëÀí½âSocket½Ó¿Ú¡£
 
Socket½Ó¿ÚÉè¼ÆÕß×îÏÈÊǽ«½Ó¿Ú·ÅÔÚUnix²Ù×÷ϵͳÀïÃæµÄ¡£Èç¹ûÁ˽âUnix
ϵͳµÄÊäÈëºÍÊä³öµÄ»°£¬¾ÍºÜÈÝÒ×Á˽â ......

LinuxϵÄshellÓëmake(2008

LinuxϵÄshellÓëmake
Ò»¡¢shell
1.1 ʲôÊÇshell
¡ñ Óû§ÓëLinuxµÄ½Ó¿Ú
¡ñ ÃüÁî½âÊÍÆ÷
¡ñ Ö§³Ö¶àÓû§
¡ñ Ö§³Ö¸´Ôӵıà³ÌÓïÑÔ
¡ñ ShellÓкܶàÖÖ£¬È磺csh,tcsh,pdksh,ash,sash,zsh,bashµÈ¡£LinuxµÄȱʡShellΪbash(Bourne Again Shell)¡£
ShellÊÇÓû§ºÍ²Ù×÷ϵͳ֮¼ä×îÖ÷Òª½Ó¿Ú¡£Í¨¹ýShell£¬¿ÉÒÔͬʱÔÚºǫ́ÔËÐжà¸öÓ ......

linuxͼÐνçÃæ²ã´Î¹ØÏµ×ܽá

¹ØÓÚlinuxͼÐνçÃæµÄ»ù±¾ÖªÊ¶  
  ºÜ¶àLINUX³õѧÕß·Ö²»Çå³þlinuxºÍXÖ®¼ä,XºÍXfree86Ö®¼ä,XºÍKDE,GNOMEµÈÖ®¼äÊÇʲô¹ØÏµ.³£³£»ìÏý¸ÅÄî,ÎÒÏëÒԱȽÏÒ×ÓÚÀí½âµÄ·½Ê½ËµÃ÷Ò»ÏÂX,X11,XFREE,WM,KDE,GNOMEµÈÖ®¼äµÄ¹ØÏµ.   
  Ò»,linux±¾ÉíûÓÐͼÐνçÃæ,linuxÏÖÔÚµÄͼÐνçÃæµÄʵÏÖÖ»ÊÇlinuxϵÄÓ¦ÓóÌÐò ......

¸ßÊÖ½ø½× LinuxϵͳÏÂMTD/CFIÇý¶¯½éÉÜ

 
¸ßÊÖ½ø½× LinuxϵͳÏÂMTD/CFIÇý¶¯½éÉÜ
2007-06-16 04:00×÷Õߣº³ö´¦£ºÂÛ̳ÕûÀíÔðÈα༭£ºÔ­Ò°
¡¡¡¡Ä³Ð©IntelµÄFLASHоƬ£¨ÈçStrataFlashϵÁУ©Ö§³Ö¶à·ÖÇø£¬Ò²¾ÍÊǸ÷¸ö·ÖÇø¿ÉÒÔͬʱ½øÐвÙ×÷¡£Ó¦¸Ã˵ÕâÊDz»´íµÄÌØÐÔ£¬µ«ÊÇÒ²»á´øÀ´Ð©ÎÊÌâ¡£¼ÇµÃµ±³õÒÆÖ²Linux-2.4.21£¬¹ÒJFFS2ÎļþϵͳµÄʱºò£¬¾­³£»á±¨Ò»Ð©"Magic bitm ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ